JQuery के साथ "onclick" कैसे निकालें?


100

PHP कोड:

<a id="a$id" onclick="check($id,1)" href="javascript:void(0)"  class="black">Qualify</a>

मैं हटाना चाहता हूं onclick="check($id,1)ताकि लिंक पर क्लिक नहीं किया जा सके या " check($id,1)निकाल नहीं दिया जाएगा। मैं इसे JQuery के साथ कैसे कर सकता हूं?"

जवाबों:


238

पुराना रास्ता (पूर्व 1.7):

$("...").attr("onclick", "").unbind("click");

नया तरीका (1.7+):

$("...").prop("onclick", null).off("click");

(बदलें ... आप की जरूरत चयनकर्ता के साथ।)


26
क्या इसे हटाया नहीं जाना चाहिए ('ऑनक्लिक')?
रोहटिन मार्थ

हां, अच्छा बिंदु, क्लीनर हो सकता है, लेकिन मुझे यकीन नहीं है कि यह निष्पादन के दृष्टिकोण से अलग होगा।
glmxndr

6
JQuery के 1.7+ के साथ आप / बंद: stackoverflow.com/questions/209029/…
लांस क्लीवलैंड

6
हटाने पर पहली टिप्पणी देखें। api.jquery.com/removeattr Removing an inline onclick event handler using .removeAttr() doesn't achieve the desired effect in Internet Explorer 6, 7, or 8. To avoid potential problems, use .prop() instead
andyface

2
@ कैंडीफेस हाँ जो कि प्रलेखन में है, लेकिन मुझे .prop()IE11 के लिए भी उपयोग करना था ।
onetwo12

58

मुझे पता है कि यह काफी पुराना है, लेकिन जब एक खोए हुए अजनबी को यह प्रश्न उत्तर की तलाश में मिलता है (जैसे मैंने किया) तो यह हटाने का सबसे अच्छा तरीका है, इसके बजाय हटाने का उपयोग करें ():

$element.prop("onclick", null);

आधिकारिक jokus का हवाला देते हुए :

"। इनक्वायरी ईवेंट हैंडलर का उपयोग करके .removeAttr () को हटाने से इंटरनेट एक्सप्लोरर 6, 7, या 8 में वांछित प्रभाव प्राप्त नहीं होता है। संभावित समस्याओं से बचने के लिए, .prop () के बजाय" का उपयोग करें।


1
मैंने पाया कि यह सबसे अच्छा है कि जब आप इसे इस तरह टाइप करते हैं तो ऑनलिक ईवेंट को कैसे हटाएं। <span onlick="method()">sometext>/span>घटना पूरी तरह से
निष्पक्ष है

3
मुझे नहीं लगता कि यह सबसे अच्छा तरीका है। jsfiddle.net/TN2wr बनाम jsfiddle.net/TN2wr/1
गस

मैं 1.6 डॉलर (तत्व) .attr ('onclick', null) से पुराने एक JQ का उपयोग कर रहा हूं; मेरे लिये कार्य करता है।
मेटामागिकम

18

onclickसंपत्ति निकालना

मान लीजिए कि आपने अपना क्लिक ईवेंट इनलाइन जोड़ा, जैसे:

<button id="myButton" onclick="alert('test')">Married</button>

फिर, आप इस तरह की घटना को दूर कर सकते हैं:

$("#myButton").prop('onclick', null); // Removes 'onclick' property if found

clickईवेंट श्रोताओं को हटाना

मान लीजिए कि आपने किसी इवेंट श्रोता को परिभाषित करके अपना क्लिक ईवेंट जोड़ा, जैसे:

$("button").on("click", function() { alert("clicked!"); });

... या इस तरह:

$("button").click(function() { alert("clicked!"); });

फिर, आप इस तरह की घटना को दूर कर सकते हैं:

$("#myButton").off('click');          // Removes other events if found

दोनों को निकाल रहा है

यदि आप अनिश्चित हैं कि आपका ईवेंट कैसे जोड़ा गया है, तो आप दोनों को जोड़ सकते हैं, जैसे:

$("#myButton").prop('onclick', null)  // Removes 'onclick' property if found
              .off('click');          // Removes other events if found



5

बाइंड के साथ इतनी कोशिश करने के बाद, अनबाइंड, ऑन, ऑफ, क्लिक, अटर, रिमूव, एट्रेट, प्रोप मैंने इसे काम किया। इसलिए, मेरे पास निम्न परिदृश्य है: मेरे html में मैंने किसी भी इनलाइन ऑनक्लिक हैंडलर को संलग्न नहीं किया है।

फिर मेरी जावास्क्रिप्ट में मैंने इनलाइन ऑनक्लिक हैंडलर जोड़ने के लिए निम्नलिखित का उपयोग किया:

$(element).attr('onclick','myFunction()');

जावास्क्रिप्ट से बाद के बिंदु पर इसे हटाने के लिए मैंने निम्नलिखित का उपयोग किया:

$(element).prop('onclick',null);

यह वह तरीका है जिसने मेरे लिए जावास्क्रिप्ट में किसी घटना पर क्लिक करने और घटनाओं को रद्द करने के लिए काम किया। अपने तत्वों में किसी भी इनलाइन onclick हैंडलर को सम्मिलित करना न भूलें।


मुझे यह पसंद है, लेकिन एक प्रो और दूसरा एटर क्यों होगा?
स्टैचू

मुझे यकीन नहीं है, लेकिन जिस तरह से मैं यह देख रहा हूं वह यह है कि एटर के साथ आप संबंधित myFunction () और प्रोप ('ऑनक्लिक', नल) के साथ ऑनक्लिक हैंडलर जोड़ / इंजेक्ट करते हैं, इसलिए विशेषता को हटा दिया जाता है, इसलिए कोई फ़ंक्शन नहीं कहा जाएगा। यह मेरे लिए काम करने का तरीका है। और मैं नोटिस कर सकता हूं कि कैसे तत्व को एट्री के माध्यम से हैंडक्लियर किया गया था और प्रोप के बाद इसे कैसे हटा दिया गया था।
bboydflo

1
भविष्य में संदर्भ के लिए, यदि आप वास्तव में उपयोग करते हुए किया जाना चाहिए .on('click', myFunction)(ध्यान दें कि myFunctionहै नहीं उद्धरण में) और फिर, बाद में,.off('click')
JDB अभी भी मोनिका याद है

1

क्या होगा यदि ऑनक्लिक घटना सीधे तत्व पर नहीं है, लेकिन मूल तत्व से? यह काम करना चाहिए:

$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
    e.preventDefault();
    e.stopPropagation();
    return false;
});

एक अन्य क्लिक-श्रोता (डिफ़ॉल्ट आदि को रोकने के लिए) इसे श्रोता सूची के अंत में जोड़ सकता है और इस प्रकार अन्य श्रोताओं को अभी भी पहले निष्पादित किया जाएगा। मुझे यकीन नहीं है कि अगर यह सूची में पहले या आखिरी में जोड़ा जाता है। वैसे भी 'ऑफ' का उपयोग करना बेहतर है जैसा कि अन्य उत्तरों में देखा गया है।
फ्रेडरिक लीटनबर्गर

0

यदि आप ID द्वारा onclick इवेंट को अनबाइंड करते हैं तो यह प्रयोग करें:

$('#youLinkID').attr('onclick','').unbind('click');

यदि आप क्लास द्वारा ऑनक्लिक इवेंट को अनबाइंड करते हैं तो यह प्रयोग करें:

$('.className').attr('onclick','').unbind('click');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.