سؤال

رمز 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؟

هل كانت مفيدة؟

المحلول

الطريق القديم (ما قبل 1.7):

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

طريق جديد (1.7+):

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

(استبدل ... مع المحدد الذي تحتاجه.)

// use the "[attr=value]" syntax to avoid syntax errors with special characters (like "$")
$('[id="a$id"]').prop('onclick',null).off('click');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<a id="a$id" onclick="alert('get rid of this')" href="javascript:void(0)"  class="black">Qualify</a>

نصائح أخرى

أعلم أن هذا قديم جدا، ولكن عندما يجد الغريب المفقود هذا السؤال يبحث عن إجابة (كما فعلت)، فهذه هي أفضل طريقة للقيام بذلك، بدلا من استخدام Removeattr ():

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

نقلا عن ذلك jquerys مسؤول Doku.:

"إزالة معالج حدث OnClick المضمن باستخدام .REMoveattr () لا يحقق التأثير المرغوب في Internet Explorer 6 أو 7 أو 8. لتجنب المشكلات المحتملة واستخدام .PROP () بدلا من ذلك"

إذا كنت تستخدم JQuery 1.7

$('html').off('click');

آخر

$('html').unbind('click');

إزالة 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

إنه سهل للغاية باستخدام Removeattr.

$(element).removeAttr("onclick");

بعد محاولة صعبة للغاية مع ربط، إلغاء تأجيل، انقر فوق، أسس، Removeattr، الدعامة التي جعلتها تعمل. لذلك، لدي السيناريو التالي: في HTML الخاص بي لم أرفق أي معالجات Inline OnClick.

ثم في جافا سكريبت استخدمت ما يلي لإضافة معالج OnClick مضمن:

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

لإزالة هذا في نقطة لاحقة من جافا سكريبت استخدمت ما يلي:

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

هذه هي الطريقة التي عمل بها من أجلي لربط وتضطر بنقذ الأحداث دينامي في جافا سكريبت. تذكر عدم إدراج أي معالج مضمن OnClick في عناصرك.

ماذا لو حدث OnClick ليس مباشرة على العنصر، ولكن من العنصر الأصل؟ هذا يجب أن يعمل:

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

جرب هذا إذا قمت بإلغاء الحدث OnClick حسب المعرف ثم استخدم:

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

جرب هذا إذا قمت بإلغاء الحدث OnClick حسب الفصل، فاستخدم:

$('.className').attr('onclick','').unbind('click');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top