2013-01-07 15 views
7

पर काम कर सकता है मेरे पास यह सरल कोड है। http://jsfiddle.net/borth/BmEZv/ यदि आप एक बार लिंक पर क्लिक करते हैं, तो यह ठीक काम करता है। यदि आप दूसरी बार उस पर क्लिक करते हैं, तो यह काम नहीं करता है। डोम लोड होने के बाद एचटीएमएल में एचटीएमएल लोड होने के कारण, मैंने कोशिश की है .on, .bind, .delegate, और .live। उनमें से कोई भी काम नहीं करता है। लाइव जिसे बहिष्कृत किया जा रहा है (मैं jquery 1.7.2 का उपयोग कर रहा हूं)।jquery लाइव के लिए वैकल्पिक जो

क्या कोई यह समझा सकता है कि .live एकमात्र ऐसा कार्य है जो काम करता है और क्यों अन्य काम नहीं करते हैं (या यदि मैं अन्य कार्यों के साथ कुछ गलत कर रहा हूं)।


$(document).ready(function(){ 
    $(".OpenPopup").bind('click', function(e){ 
     alert('test .OpenPopup'); 
     // do something 
     return false; 
    }); 
    $(".EditIcon").bind('click', function(){ 
     alert('test .EditIcon'); 
     // do something 
     $("#ABC").html('<div class="EditIcon OpenPopup" pwidth="800" pheight="500" ptitle="EditText">click here again</div>'); 
    }); 
}); 


<div id="ABC"><div class="EditIcon OpenPopup" pwidth="800" pheight="500" ptitle="EditText">click here</div></div> 
+2

'.On' के लिए सरकारी प्रतिस्थापन है' .Live' –

+2

का जवाब के लिए jQuery डॉक्स FAQ पढ़ें 'why' – charlietfl

+0

मैं इसे .on साथ काम मिल गया()। मेरे पास गलत वाक्यविन्यास था। –

उत्तर

16
$(document).ready(function(){ 
     $(document.body).on('click', ".OpenPopup", function(e){ 
      alert('test .OpenPopup'); 
      // do something 
      return false; 
     }); 
     $(document.body).on('click', ".EditIcon", function(){ 
      alert('test .EditIcon'); 
      // do something 
      $("#ABC").html('<div class="EditIcon OpenPopup" pwidth="800" pheight="500" ptitle="Edit Text">click here again</div>'); 
     }); 
    }); 
+0

वाह इस तरह से कभी सोचा नहीं। मैं अभी भी नवीनतम jquery निर्माण में .live के कुछ वैकल्पिक तरीके की तलाश कर रहा हूं। क्या कोई आधिकारिक बयान है? स्निपेट के लिए धन्यवाद मैं इसका परीक्षण करूंगा। –

+1

लेकिन आप इसे कैसे लक्षित करते हैं। ओपनपॉप जिस पर क्लिक किया गया था? – PixMach

+0

क्लिक हैंडलर के भीतर 'e.target' - [jQuery event.target doc] (https://api.jquery.com/event.target/) –

2

.on()with or without delegation इस्तेमाल किया जा सकता, नीचे पर का एक उदाहरण() के प्रतिनिधिमंडल का उपयोग कर रहा है।

$("#ABC").on('click', ".OpenPopup", function(e){ 
@Dhofca यह वास्तव में काम किया बाद

http://jsfiddle.net/BmEZv/1/

+0

यह काम नहीं करता है। यह अपेक्षित के रूप में पहले क्लिक पर काम करता है, लेकिन दूसरे क्लिक पर, यह केवल .on() का उपयोग करके पहली चेतावनी पंजीकृत करता है। $ ("संपादित करें आइकन")। बाइंड ('क्लिक', फ़ंक्शन() { निकाल दिया नहीं गया है। मैंने इसे भी कोशिश की है .delegate()। –

+0

@ ब्रैंडनऑर्थ क्या आप चाहते हैं कि मैं आपके लिए संपूर्ण कोड दोबारा लिखूं ?, बस दूसरे बाइंड को 'ऑन() ' – Musa

+0

पर बदलें। मैंने आपके उदाहरण को .d() में जोड़ने के लिए संशोधित किया है। धन्यवाद। –

0

। मैं सिर्फ एक उदाहरण दिखा रहा हूं जिसे मैंने 'इस' कीवर्ड से आजमाया।

$(document.body).on('click', ".query-result table tr", function() { 
    var el = $(this); 
    el.closest('table').find('tr').removeClass('dotted'); 
    el.addClass('dotted'); 
}); 
संबंधित मुद्दे