Heim  >  Fragen und Antworten  >  Hauptteil

Deaktivierung des JQuery-Click()-Ereignisses – Stapelüberlauf

$(document).ready(function(){
    $(".menua1").click(function(){
    //执行了点击事件的内容                    
            
    });
});
function toggleMenu(){
    var fs = window.top.document.getElementById("bframeset");
    if(条件true){
        $(".menua1_noclick").attr("class","menua1");
    }else{
        $(".menua1").attr("class","menua1_noclick");
    }
}
//HTML
<a class="menua1">A按钮</a>

Als ich auf die Schaltfläche B geklickt und toggleMenu() aufgerufen habe, um den Klassenwert des Elements zu ändern, hatte ich das Gefühl, dass das vorherige Klickereignis in ready() ungültig sein sollte. Als ich toggleMenu() aufrief, änderte ich den Klassenwert in Anfangswert. click() sollte normal ausgeführt werden können.
Aber egal wie der Klassenwert des a-Tags geändert wird, es hat keinen Einfluss auf meinen ursprünglichen Klick, ich kann immer noch darauf klicken den jqeury-Code und löse ihn.

Mein Ziel ist es, das ursprüngliche Klickereignis von Schaltfläche A nach dem Klicken auf Schaltfläche B zu deaktivieren und das ursprüngliche Klickereignis von Schaltfläche A zu aktivieren, wenn erneut auf Schaltfläche B geklickt wird.

Warten Sie online, geben Sie bitte Ratschläge von Experten.

伊谢尔伦伊谢尔伦2663 Tage vor1037

Antworte allen(3)Ich werde antworten

  • 我想大声告诉你

    我想大声告诉你2017-07-05 10:56:50

    当我点击B按钮调用了toggleMenu(),将该元素的class值改变,我觉得以前ready()里面的click事件应该失效

    首先这句话, 这个理解就是错误的.

    举个栗子:

    有一个人叫小明, 他爸妈管他叫小明明, 他老婆管他叫大明明, 有一天小明的手破了一个口,
    他爸/妈看到了问: 小明明你手怎么弄破了?
    他老婆说: 大明明做菜的时候不小心切到了
    又回头问小明: 老公, 你的手还痛吗?
    爸/妈说: 哎, 都这么大的人了 还叫大明明干嘛? 多不好听
    老婆说: 好, 以后不叫了

    Question: 小明的手坏了没有?

    jQuery的选择器, 是为了通过不同的手段选择到元素,
    但是你对它造成的shanghai, 不会因为你改变了它的某个属性而消除.

    所以回归正题, 给元素绑定了点击事件, 需要清除

    1. 如果是js绑定:
    ele.onclick = function(){...}
    //要清除的话 , 用空方法覆盖
    ele.onclick = function(){}
    
    2. jQuery on方法绑定的点击事件
    //用off解除绑定
    $ele.on("click", function(){})
    $ele.off("click", function(){})
    
    3.或者在点击事件的回调中判断状态(全局变量/flag)
    var flag = true;
    $ele.on("click", function(){
      if(flag){
      ... 
      }
    });
    function toggle(){
      flag = !flag;
    }

    Antwort
    0
  • PHP中文网

    PHP中文网2017-07-05 10:56:50

    楼上举得列子也是有点意思,简单来讲,事件的绑定仅仅和元素的本身有关,跟他以后叫什么名字没太大关系。就好像说你的身份证代表了你这个人,然后有一天你换了名字,身份证是否就变成了代表别人?就是这个道理

    Antwort
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 10:56:50

    $(".menua1").off('click'),把按钮取消绑定click事件不就行了么

    Antwort
    0
  • StornierenAntwort