2008-09-23 11 views
7

मैं एक बटन तत्व पर एक क्लिक ईवेंट संलग्न करना चाहता हूं और उसके बाद इसे हटा देता हूं, लेकिन मुझे उम्मीद के अनुसार काम करने के लिए अनक्लिक() या अनबिंड() ईवेंट नहीं मिल सकता है। नीचे दिए गए कोड में, बटन 'तन' रंग है और क्लिक ईवेंट काम करता है।इवेंट हैंडलिंग jQuery अनलॉक() और unbind() घटनाओं?

window.onload = init; 
function init() { 
    $("#startButton").css('background-color', 'beige').click(process_click); 
    $("#startButton").css('background-color', 'tan').unclick(); 
} 

मैं अपने तत्वों से ईवेंट कैसे हटा सकता हूं?

उत्तर

18

unclick() जैसी कोई चीज़ नहीं है। आपको वह कहां से मिला?

आप अनबाइंड को फोन करके एक तत्व से अलग-अलग ईवेंट हैंडलर्स निकाल सकते हैं: आप सभी संचालकों को निकालना चाहते हैं

$("#startButton").unbind("click", process_click); 

, या आप एक हैंडलर के रूप में एक गुमनाम समारोह का इस्तेमाल किया है, तो आप unbind() को दूसरा तर्क को छोड़ सकते हैं :

$("#startButton").unbind("click"); 
+0

http://www.visualjquery.com/1.0.4.html अनक्लिक (एफएन) मिलान किए गए प्रत्येक तत्व से बाध्य क्लिक ईवेंट हटा देता है। आपको मूल कार्य विधि में उपयोग किए गए समान फ़ंक्शन को पास करना होगा। –

+2

जानकारी के लिए धन्यवाद। मैंने थोड़ा गहरा खोला, और पाया कि अनलॉक() को jQuery 1.1 में हटा दिया गया था। – Jim

3

अनबीन्ड आपका मित्र है।

$("#startButton").unbind('click') 
0

क्या आप वाकई इसे अनइंड करना चाहते हैं? क्या होगा यदि बाद में आप इसे फिर से बांधना चाहते हैं, और फिर, और फिर? मुझे डायनामिक इवेंट-हैंडलिंग बाइंड/अनबिंड पसंद नहीं है, क्योंकि जब वे आपके कोड के विभिन्न बिंदुओं से कॉल होते हैं, तो वे हाथ से बाहर निकलते हैं।

आप वैकल्पिक विकल्पों पर विचार करना चाहते हो सकता है:

  • परिवर्तन बटन "अक्षम" संपत्ति
  • "process_click" के अंदर अपने तर्क को लागू समारोह

बस मेरे 2 सेंट, नहीं एक सार्वभौमिक उपाय।

6

या आप एक स्थिति हो सकता है जहाँ आप क्लिक समारोह निकल करने के लिए आप इसका इस्तेमाल के तुरंत बाद ही चाहते हैं, जैसे मैं ही था:

$('#selector').click(function(event){ 
    alert(1); 
    $(this).unbind(event); 
}); 
संबंधित मुद्दे