2012-06-18 20 views
15

के अंदर की घटनाओं से जुड़ें, मुझे किसी ईवेंट को बाध्य करने की आवश्यकता है (को मनमाने ढंग से <input> पर) एक आईफ्रेम के अंदर जो उपयोगकर्ता द्वारा एक निश्चित कार्रवाई करने के बाद गतिशील रूप से बनाया गया है। कोड जो आईफ्रेम को जोड़ता है और आईफ्रेम के अंदर कोड मेरा नहीं है और मैं इसे किसी भी तरह से नहीं बदल सकता (यह एक सीएमएस व्यवस्थापक पैनल है)।गतिशील रूप से बनाए गए आईफ्रेम

jQuery 1.6 (फिर से, यह मेरी पसंद नहीं है, मैं इसके साथ अटक गया हूं) का उपयोग कर घटनाओं को कैसे सुन सकता हूं। मैंने सोचा था कि delegate() हो सकता है जो मैं चाहता:

$('body').delegate('iframe input', 'click', function(e) { 
    alert('bingo?'); 
}); 

लेकिन इसके बाद के संस्करण को सचेत नहीं है जब एक इनपुट क्लिक किया जाता है। नीचे, हालांकि, उम्मीद के अनुसार काम करता है:

$('body').delegate('input', 'click', function(e) { 
    alert('bingo?'); 
}); 

लेकिन यह iframe के बाहर है।

srciframe उसी डोमेन पर इंगित करता है, जाहिर है।

किसी भी मदद या सही दिशा में केवल एक प्रोड की सराहना की जाती है।

उत्तर

17

यह 'iframe input' के अंदर input तत्वों का चयन नहीं करता है।

आप

$('body iframe').contents().find('input').bind('click',function(e) { 
    alert('bingo?'); 
}); 

की तरह घटना मुझे लगता है कि तुम भी

$('body iframe').contents().find('body').delegate('input','click',function(e) { 
    alert('bingo?'); 
}); 

की तरह कुछ का उपयोग पता लगाने के लिए कर सकते हैं अगर आइफ्रेम पूरी तरह से लोड किया गया है बाँध, विधि इस जवाब में वर्णित उपयोग कर सकते हैं https://stackoverflow.com/a/5788723/344304

मुख्य/मूल दस्तावेज़ में जोड़ें:

function iframeLoaded() { 
    $('body iframe').contents().find('input').bind('click',function(e) { 
     alert('bingo?'); 
    }); 
} 

आइफ्रेम दस्तावेज़ में जोड़ें:

window.onload = function() { 
    parent.iframeLoaded(); 
} 

या

$('body iframe').load(function(){ 
    $('body iframe').contents().find('input').bind('click',function(e) { 
      alert('bingo?'); 
     }); 
}); 
+0

हाँ उपयोग करें, लेकिन 'पर()' 1.7 में पेश किया गया था। मैं इसे 1.6 में कैसे कर सकता हूं? – bububaba

+0

अद्यतन कोड, जो काम करना चाहिए यदि आपके पास iframe में गतिशील रूप से जोड़े गए इनपुट तत्व नहीं हैं। –

+0

धन्यवाद। मैं उपर्युक्त '$ (" बॉडी आईफ्रेम ") कैसे सुनिश्चित कर सकता हूं। Iframe पूरी तरह से लोड होने के बाद सामग्री()' चलाया जाता है? या मुझे यकीन करने की ज़रूरत नहीं है? – bububaba

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