मुझे आश्चर्य है कि कोई मुझे समारोह में मदद कर सकता है।

ऑनलिक केवल एक बार फायर करता है।

launchTagManager: function(id) {
    console.log(document.getElementById('metadata_field_multiple_text_701889_options['+id+']'));
    document.getElementById('metadata_field_multiple_text_701889_options['+id+']').value="change";

    $('body').append('<div id="tagManagerPopup" class="eesTooltip tooltipSouth" style="display:block;width:450px; left: 50%; top: 50%;-webkit-transform: translate(-50%, -50%);-webkit-font-smoothing: subpixel-antialiased;transform: translate(-50%, -50%);position: fixed;"> <div class="tooltipTitle">Add a tag...</div><div class="tooltipContent"> <div class="tooltipMessage"> <div id="ees_infoBoxColumn"> <div id="ees_infoBox"> <div id="ees_infoBoxInner1"> <div id="ees_infoBoxInner2"> <div id="ees_assetInfo"> <div class="row container" id="geocoder" style="margin-bottom:5px;"> <input id="cu-geocoder-place" class="inputText" type="text" value="" style="width:290px;"> <a href="#" id="cu-geocoder-submit" class="guiButton light alignRight">Search</a> </div><div class="row clearfix" style="margin-top:5px;"> <a id="addTag" href="" class="guiButton default alignLeft"><span>Add tag</span></a> <a id="closeTagManager" href="" class="guiButton light alignRight"><span>Cancel</span></a> </div></div></div></div></div></div></div></div></div>');

    $(document).on('click', '#closeTagManager', function(e) { 
      e.preventDefault();
      $('#tagManagerPopup').hide();
    });
  }

launchTagManagerएक गतिशील रूप से जोड़े गए बटन के ऑनक्लिक द्वारा कॉल किया जाता है।

जब मैं पहली बार #closeTagManager बटन क्लिक करता हूं तो पॉपअप बंद हो जाता है, लेकिन जब मैं दूसरी बार पॉप अप खोलता हूं और इसे बंद करने का प्रयास करता हूं तो यह खुला रहता है।

कोई विचार?

-1
davidjh 4 अप्रैल 2017, 14:29
3
संकेत: आपके पास डुप्लीकेट आईडी हैं। यह गलत पॉपअप बंद कर रहा है।
 – 
John Dvorak
4 अप्रैल 2017, 14:34
1
क्या आप बटन को सिमेंटिक क्लास दे सकते हैं? उदाहरण के लिए <a id="closeTagManager" class="closeTagManager" .. और फिर आईडी के बजाय उसका उपयोग करें: $(document).on('click', '.closeTagManager', ...
 – 
freedomn-m
4 अप्रैल 2017, 14:34
1
किसी भी कारण से फ़ंक्शन के अंदर क्लिक को बाध्य किया जा रहा है?
 – 
Vaishal Patel
4 अप्रैल 2017, 14:35

2 जवाब

इस ब्लॉक को स्थानांतरित करने का प्रयास करें

$(document).on('click', '#closeTagManager', function(e) { 
  e.preventDefault();
  $('#tagManagerPopup').hide();
});

launchTagManager विधि के बाहर, और आईडी को कक्षा में बदलें।

इस तरह:

launchTagManager: function(id) {
    console.log(document.getElementById('metadata_field_multiple_text_701889_options['+id+']'));
    document.getElementById('metadata_field_multiple_text_701889_options['+id+']').value="change";
    $('body').append('<div class="tagManagerPopup eesTooltip tooltipSouth" style="display:block;width:450px; left: 50%; top: 50%;-webkit-transform: translate(-50%, -50%);-webkit-font-smoothing: subpixel-antialiased;transform: translate(-50%, -50%);position: fixed;"> <div class="tooltipTitle">Add a tag...</div><div class="tooltipContent"> <div class="tooltipMessage"> <div id="ees_infoBoxColumn"> <div id="ees_infoBox"> <div id="ees_infoBoxInner1"> <div id="ees_infoBoxInner2"> <div id="ees_assetInfo"> <div class="row container" id="geocoder" style="margin-bottom:5px;"> <input id="cu-geocoder-place" class="inputText" type="text" value="" style="width:290px;"> <a href="#" id="cu-geocoder-submit" class="guiButton light alignRight">Search</a> </div><div class="row clearfix" style="margin-top:5px;"> <a id="addTag" href="" class="guiButton default alignLeft"><span>Add tag</span></a> <a href="" class="closeTagManager guiButton light alignRight"><span>Cancel</span></a> </div></div></div></div></div></div></div></div></div>');
},
init: function(){
    $(document).on('click', '.closeTagManager', function(e) { 
      e.preventDefault();
      $('.tagManagerPopup').hide();
    });
}
0
Taha Paksu 4 अप्रैल 2017, 14:37

जिस तरह से आपने इसे करने का प्रयास किया है उसमें 2 समस्याएं हैं। सबसे पहले, आप संवाद छुपा रहे हैं और फिर उसी आईडी के साथ एक और जोड़ रहे हैं। jQuery केवल पहला ढूंढेगा, इसलिए जब आप दूसरी बार संवाद खोलते हैं और फिर बंद करें बटन पर क्लिक करते हैं, तो उसे वह मिल जाएगा जो पहले से छिपा हुआ है। इसलिए यह कोई और डायलॉग नहीं छुपाता है। इसे हल करने के लिए आप इसे आसानी से हटा सकते हैं।

साथ ही, आप संवाद बनाने वाले फ़ंक्शन के अंदर क्लिक ईवेंट हैंडलर को बाध्य कर रहे हैं। आपको केवल उस ईवेंट हैंडलर को एक बार बनाने की आवश्यकता है, इसलिए इसे फ़ंक्शन के बाहर बनाएं ...

launchTagManager: function(id) {
    console.log(document.getElementById('metadata_field_multiple_text_701889_options['+id+']'));
    document.getElementById('metadata_field_multiple_text_701889_options['+id+']').value="change";

    $('body').append('<div id="tagManagerPopup" class="eesTooltip tooltipSouth" style="display:block;width:450px; left: 50%; top: 50%;-webkit-transform: translate(-50%, -50%);-webkit-font-smoothing: subpixel-antialiased;transform: translate(-50%, -50%);position: fixed;"> <div class="tooltipTitle">Add a tag...</div><div class="tooltipContent"> <div class="tooltipMessage"> <div id="ees_infoBoxColumn"> <div id="ees_infoBox"> <div id="ees_infoBoxInner1"> <div id="ees_infoBoxInner2"> <div id="ees_assetInfo"> <div class="row container" id="geocoder" style="margin-bottom:5px;"> <input id="cu-geocoder-place" class="inputText" type="text" value="" style="width:290px;"> <a href="#" id="cu-geocoder-submit" class="guiButton light alignRight">Search</a> </div><div class="row clearfix" style="margin-top:5px;"> <a id="addTag" href="" class="guiButton default alignLeft"><span>Add tag</span></a> <a id="closeTagManager" href="" class="guiButton light alignRight"><span>Cancel</span></a> </div></div></div></div></div></div></div></div></div>');
}

$(document).on('click', '#closeTagManager', function(e) { 
    e.preventDefault();
    $('#tagManagerPopup').remove();
});

वैकल्पिक रूप से आप ईवेंट हैंडलर को उस फ़ंक्शन के अंदर छोड़ सकते हैं जो संवाद बनाता है, क्योंकि इसे एक नए बटन को सौंपा जा रहा है जो नष्ट होने वाला है ...

launchTagManager: function(id) {
    console.log(document.getElementById('metadata_field_multiple_text_701889_options['+id+']'));
    document.getElementById('metadata_field_multiple_text_701889_options['+id+']').value="change";

    $('body').append('<div id="tagManagerPopup" class="eesTooltip tooltipSouth" style="display:block;width:450px; left: 50%; top: 50%;-webkit-transform: translate(-50%, -50%);-webkit-font-smoothing: subpixel-antialiased;transform: translate(-50%, -50%);position: fixed;"> <div class="tooltipTitle">Add a tag...</div><div class="tooltipContent"> <div class="tooltipMessage"> <div id="ees_infoBoxColumn"> <div id="ees_infoBox"> <div id="ees_infoBoxInner1"> <div id="ees_infoBoxInner2"> <div id="ees_assetInfo"> <div class="row container" id="geocoder" style="margin-bottom:5px;"> <input id="cu-geocoder-place" class="inputText" type="text" value="" style="width:290px;"> <a href="#" id="cu-geocoder-submit" class="guiButton light alignRight">Search</a> </div><div class="row clearfix" style="margin-top:5px;"> <a id="addTag" href="" class="guiButton default alignLeft"><span>Add tag</span></a> <a id="closeTagManager" href="" class="guiButton light alignRight"><span>Cancel</span></a> </div></div></div></div></div></div></div></div></div>');

    $('#closeTagManager').on('click', function(e) { 
        e.preventDefault();
        $('#tagManagerPopup').remove();
    });
}

यदि आप इसे दूसरे तरीके से करते हैं तो दस्तावेज़ पर क्लिक हैंडलर को बाध्य करने की कोई आवश्यकता नहीं है।

0
Reinstate Monica Cellio 4 अप्रैल 2017, 18:02