2009-11-17 8 views
8

मैं एक textbox कि पैरामीटर शामिल करने के लिए एक घटना बाध्य करने के लिए कोशिश कर रहा हूँ के साथ अनबाइंड घटना। निम्नलिखित दिखते हैं कि इसे करना चाहिए, लेकिन जब भी पृष्ठ लोड होता है, तो इसे निष्पादित किया जाता है।jQuery बाँध और मानकों

jQuery(function(){ 
    jQuery('#textbox').bind('click', EventWithParam('param')); 
}); 

ईवेंट लोड होने पर हर पैरामीटर को उस पैरामीटर के साथ बुलाया जाता है। यह काम नहीं कर सकता है क्योंकि पैरामीटर वाले ईवेंट समर्थित नहीं हैं। यदि हां, तो क्या कोई और रास्ता है?

उत्तर

10

एक समारोह है कि पैरामीटर लेता बाध्य करने के लिए, मानकों पर एक बंद के रूप में कार्य करने के लिए एक गुमनाम समारोह का उपयोग करें।

jQuery(function($) { 
    var param = 'text'; 
    $('#textbox').click(function() { 
     EventWithParam(param); 
     // or just use it without calling out to another function 
     $(this).text(param); 
    }); 
}); 

आपका उदाहरण EventWithParam समारोह निष्पादित हो रहा है, और फिर उस समारोह कॉल का परिणाम के लिए बाध्य करने की कोशिश कर।

एक समारोह को निर्दिष्ट घटना की निर्दिष्ट प्रकार (गुमनाम समारोह सहित) के लिए सभी संचालकों निकल जाएंगे बिना unbind कॉलिंग। आप विशेष रूप से है कि समारोह निकल चाहते हैं, आप एक नाम के साथ प्रदान करने के लिए, इस तरह की आवश्यकता होगी:

jQuery(function($) { 
    var param = 'text', 
     clickCallback = function() { 
      EventWithParam(param); 
      // or just use it without calling out to another function 
      $(this).text(param); 
     }; 
    $('#textbox').click(clickCallback); 
}); 
1

कारण यह है कि EventWithParam अपने बंधन में वहीं एक समारोह के रूप में बुलाया जा रहा है। एक और तरीके से वाक्यांश दिया गया है, आप परिणाम पर EventWithParam('param') पर क्लिक करने के लिए क्लिक ईवेंट को बाध्य कर रहे हैं।

jQuery('#textbox').bind('click',function(){EventWithParam('param')}); 

अब आप बाध्य किया है यहां तक ​​कि एक समारोह है कि, जब घटना की आग, EventWithParam('param')

+0

अगर मैं तो एक अनबाइंड करते हैं, यह गुमनाम समारोह निकल जाएंगे? jQuery ('# टेक्स्टबॉक्स')। अनबिंड ('क्लिक करें') ;? –

+0

हां। देखें [http://docs.jquery.com/Events/unbind#typefn] – Dan

+0

यह मेरे लिए काम नहीं करता है? –

0
jQuery(function() { 
    jQuery('#textbox').click(function() { 
     EventWithParam(param1,param2,...,paramN); 
    }); 
}); 

function EventWithParam(param1,param2,...,paramN) { 
    doSomething...; 
    ...; 
} 
4

bdukes फोन करेगा बिल्कुल सही है: इस काम करना चाहिए। मैं अपनी प्रतिक्रिया जोड़ रहा हूं क्योंकि मुझे हाल ही में jQuery के बाइंड/अनबिंड फ़ंक्शन और अज्ञात फ़ंक्शंस, इसके ईवेंट नाम रिक्त स्थान के साथ कुछ दिलचस्प पाया गया है। पहले बाइंड इवेंट के ऊपर दिखाया गया है इसे निम्नानुसार कहा जाता है।

jQuery('#textbox').bind('click',function(){EventWithParam('param')});

निकल करने के लिए यह और भी उपयोगकर्ता को कॉल करना होगा ... jQuery('#textbox').unbind('click');

वास्तव में, सभी onClick घटनाओं को हटाने।

अब jQuery नाम रिक्त स्थान पर आता है। यदि आपके पास एक अनाम कार्य है, तो आप क्लिक ईवेंट से अटैचमेंट करना चाहते हैं और बाद में इसे अनइंड करें।

jQuery('#textbox').bind('click.yourNameSpace',function(){EventWithParam('param')});

तो इस प्रकार सरल कॉल अनबाइंड समारोह निकल लिए।

jQuery('#textbox').unbind('click.yourNameSpace');

अपने onClick घटनाओं के बाकी रहेगा।

11

आप बाध्य करने के लिए दूसरा तर्क के रूप में घटना पैरामीटर पारित कर सकते हैं()।यह कॉलबैक parametes प्रत्यक्ष नहीं है लेकिन शायद आप इसका इस्तेमाल करना चाहते हैं:

jQuery प्रलेखन से: bind

function handler(event) { 
    alert(event.data.foo); 
} 
$("p").bind("click", {foo: "bar"}, handler) 
+0

निश्चित रूप से कुछ मैं –

+0

का उपयोग करता हूं हैंडलर() फ़ंक्शन में, ऑब्जेक्ट को "डेटा" फ़ील्ड के माध्यम से एक्सेस किया जा सकता है: फ़ंक्शन हैंडलर (evt) {var fooValue = evt.data.foo; } – SCO

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