2013-02-20 13 views
13

के साथ प्रदान किया गया लिंक नीचे दिया गया लिंक एक मोडल दिखाता है और ऑब्जेक्ट आईडी के आधार पर मोडल के भीतर आंशिक रूप से प्रस्तुत करने के लिए AJAX अनुरोध चलाता है। लिंक ठीक काम करता है और लिंक मोडल पॉप अप करता है जब पेज पूरी तरह से http अनुरोध के साथ लोड हो जाता है, लेकिन अगर मैं एजेक्स अनुरोध के साथ लिंक प्रस्तुत करता हूं (उदाहरण के लिए एक अलग मोडल पॉप अप करता है और कुछ लिंक प्रस्तुत करता है) तो जेएस फ़ंक्शन नहीं चलता है। मैंने कोशिश की एक चेतावनी(); केवल जांचने के लिए और यह एजेक्स के साथ प्रस्तुत होने पर नहीं चलता है।.on ("क्लिक करें", फ़ंक्शन() काम नहीं कर रहा है जब AJAX

मैं JQuery 1.9.1 का उपयोग कर रहा हूं, पहले जेएस ने .live ('क्लिक') के साथ काम किया था, लेकिन तब से इसे हटा दिया गया है मैंने भी कोशिश की है। क्लिक करें()

कोई विचार? धन्यवाद!

लिंक

<a href="/an-object-id" data-remote=true name="modal">  

जे एस अपने लिंक delegation..since घटना पर

$(document).ready(function() { 
$("a[name=modal]").on("click", function(e) { 
    $("#mask, #modal").show(); 
    e.preventDefault(); 
etc... 
+0

क्रोम में जावास्क्रिप्ट कंसोल से आपको क्या त्रुटियां मिल रही हैं? – bsiddiqui

उत्तर

23

के लिए document से दस्तावेज़ में मौजूद है एक माता पिता को सौंपने के लिए एक ईवेंट हैंडलर संलग्न .on() का उपयोग कर तत्व, और चयनकर्ता को तर्क के रूप में पास करें।

उदाहरण:

$(document).on("click", "a[name=modal]", function(e) {...}); 

जो रूप में अच्छी तरह गतिशील रूप से उत्पन्न तत्वों के लिए काम करता है ..

+0

पूरी तरह से काम किया! आपको बहुत - बहुत धन्यवाद! : डी – Andy

+0

इसके लिए आपको बहुत बहुत धन्यवाद! मैंने अभी तक यह पता लगाने की कोशिश की है कि मेरा श्रोता फायरिंग क्यों नहीं कर रहा था! – DazBaldwin

5
$(document).on("click", "a[name=modal]", function(e) { 
    $("#mask, #modal").show(); 
    e.preventDefault(); 
etc... 
4

उपयोग गतिशील रूप से उत्पन्न कर रहा है ... घटना क्लिक सक्रिय नहीं होगा ... उपयोग दस्तावेज़ घटना का प्रतिनिधित्व करने के लिए ..

$(document).on("click","a[name='modal']", function(e) { 
     .. 
}); 

यो यू on सौंप घटनाओं के बारे में अधिक पढ़ने के लिए link के माध्यम से जा सकते हैं .. यह बहुत अच्छा होगा अगर आप निकटतम तत्व के साथ घटना में है कि बेहतर प्रदर्शन

3

मूल रूप से, आप डोम में कुछ ऐसा है जो बदल नहीं प्राप्त करता है करने के लिए अपने क्लिक करें घटना के लिए श्रोता बाध्य करने की जरूरत है । on() में एक वैकल्पिक पैरामीटर है जो आपको ईवेंट ट्रिगर को श्रोता के रूप में चुने गए आइटम के बच्चे तत्व पर फ़िल्टर करने देता है। सबसे आसान है document का उपयोग करना, लेकिन मैं सबसे नज़दीकी माता-पिता का उपयोग करना पसंद करता हूं जो मुझे पता है कि मैं नहीं बदलेगा।

<div id="super-awesome-parent"> 
    <ul> 
     <li><a href="#">Some link text</a></li> 
     <li><a href="#">Some link text</a></li> 
     <li><a href="#">Some link text</a></li> 
     <li><a href="#">Some link text</a></li> 
     <li><a href="#">Some link text</a></li> 
    </ul> 
</div> 

मैं बहुत की तरह एक on() प्रतिनिधि लिख सकते हैं:: तो, यह सोचते हैं कि मैं इस मार्कअप था

$('#super-awesome-parent').on('click', 'a', function(event){ 
    // ... code 
}); 

फिर, किसी भी <a> तत्वों ready() घटना के बाद #super-awesome-parent लिए जोड़ रहे हैं कि अभी भी द्वारा नियंत्रित किया जाएगा प्रतिनिधि

संबंधित मुद्दे