2012-06-04 13 views
10

क्या कोई मुझे बता सकता है कि यह कोड क्यों काम नहीं करेगा?jQuery ट्रिगर कस्टम ईवेंट के लिए बाइंड() या ऑन() के साथ फायरिंग नहीं करता

$('body').on('test', function() { 
    alert('test'); 
}); 

$('body').trigger('test'); 

मैं jQuery-1.7.2.min उपयोग कर रहा हूँ। मुझे कोई त्रुटि नहीं मिलती है, बस कुछ भी नहीं होता है।

मैंने $(document).ready() के अंदर कोड को इनलाइन स्क्रिप्ट के अंदर डालने का प्रयास किया है और अभी भी कुछ भी नहीं है। मैंने on() और bind() और न तो परिणाम दोनों की भी कोशिश की है। मैं एक ही वाक्यविन्यास दिखाने के सभी उदाहरण देखता हूं, तो इसके साथ क्या अलग है?

+0

यह ठीक काम कर रहा है, http://jsfiddle.net/joycse06/XXXhQ/ –

+0

हाँ आपका वाक्यविन्यास कस्टम ईवेंट – mprabhat

+0

विषम के साथ काम करता है .. ये उदाहरण सभी काम करते हैं, लेकिन यह मेरे पृष्ठ में नहीं है। मैंने अभी सुबह अपने jQuery को 1.6.4 से 1.7.2 तक अपडेट किया है, शायद मेरे सर्वर पर कुछ कैश समस्या है? मैं समझता हूं कि '() 'लागू नहीं किया गया था जब तक 1.7 – IamFace

उत्तर

8

ऐसा लगता है कि यह मुद्दा किसी भी तरह से तैयार होने वाले डीओएम में निहित है। इनलाइन स्क्रिप्ट के भीतर कोड रखना काम नहीं करेगा। एक $('document').ready() के अंदर रखकर एक गुमनाम समारोह के साथ काम करेंगे, लेकिन कुछ नहीं कारण के साथ एक समारोह कॉल '()' .. के लिए इस कोड को

$(document).ready(start); 
function start(){ 
$('body').on('test', function() { 
    alert('test'); 
}); 

$('body').trigger('test'); 
} 

काम किया लेकिन यह नहीं ... * नोटिस समारोह कॉल किया कोष्ठक।

$(document).ready(start()); 
function start(){ 
$('body').on('test', function() { 
    alert('test'); 
}); 

$('body').trigger('test'); 
} 

एक सटीक उदाहरण jsfiddle पर दोनों तरीकों से काम करता है, लेकिन किसी कारण से सिर्फ एक ही रास्ता मेरे सर्वर पर काम करता है। जो मुझे लगता है कि क्यों एक और सवाल उठता है, लेकिन कम से कम हम देख सकते हैं कि यह कोड वास्तव में काम करता है, मेरी सामग्री के साथ कुछ अजीब विसंगति है:/

+8

ऐसा इसलिए है क्योंकि आपका अर्थात् गलत है। शुरू करें() आपके स्टार्ट फ़ंक्शन के रिटर्न वैल्यू को पास कर देगा। जबकि दस्तावेज़ तैयार होने पर फ़ंक्शन निष्पादित करने के लिए कार्य को पास कर देगा। आम तौर पर, लोग अज्ञात कार्यों को पास करते हैं: $ (फ़ंक्शन() {/ * मेरी सामग्री यहां * /}); – Jeff

+0

@ जेफ +1 धन्यवाद – Chris22

+0

धन्यवाद यह मेरे लिए भी काम करता है। "चालू" घोषणा के आसपास तैयार दस्तावेज़ जोड़ना काम किया! –

1

कोशिश प्रतिनिधिमंडल:

$(document).on('test', 'body', function() { 
    alert('test'); 
}); 

$('body').trigger('test'); 

इस लाइव() के लिए इस्तेमाल किया की तरह काम करता है। http://api.jquery.com/live/

+0

आप कोड ओपी चाहता है कि प्रतिबिंबित नहीं करते हैं। ओपी का मुद्दा प्रतिनिधि नहीं है लेकिन कस्टम इवेंट – thecodeparadox

+1

यह एक कस्टम इवेंट है, और आप सही हैं कि उसका कोड काम करना चाहिए, मुझे अनुभव से पता है कभी-कभी प्रत्यक्ष बाध्यकारी के बजाए इस तरह से ईवेंट (यहां तक ​​कि कस्टम इवेंट) को बाध्य करना आसान होता है। दस्तावेज़ों से: ईवेंट हैंडलर केवल वर्तमान में चयनित तत्वों के लिए बाध्य हैं; जब आपका कोड कॉल करता है तो उस पृष्ठ पर वे मौजूद होना चाहिए।()। बेशक शरीर का अस्तित्व होना चाहिए, लेकिन उनकी स्थिति में अजीब कुछ हो रहा है, हम नहीं देख सकते हैं, इससे वह खत्म हो जाएगा। (सिद्धांत रूप में)। ;) – Jeff

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