2017-08-28 25 views
2

我試圖阻止點擊了兩次意外的解除綁定,像這樣.off單擊處理按鈕重新綁定...與.off jQuery的解除綁定單擊處理,然後用。對

$(".button").click(function() { 
 
    console.log("Button has been clicked and disabled"); 
 
\t \t $(".button").off(); 
 
}); 
 

 
$(".button2").click(function() { 
 
    console.log("Button has been re-enabled"); 
 
\t \t $(".button").on(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="button"> 
 
    Click Me 
 
</div> 
 

 
<button class="button2"> 
 
    Re-enable click 
 
</button>

我很努力地用.on重新綁定它,任何人都可以指向我的示例方向或指出我做錯了什麼?

+1

也許['one'](https://api.jquery.com/one/)更符合你的需求。 – Andy

+0

感謝您的建議,現在就閱讀吧! – fightstarr20

+0

.on提到您想要的事件及其功能.. –

回答

2

在對按鈕2的點擊功能,重新啓用的第一個按鈕的點擊與處理:$(".button").click(buttonOneClick); 下面是一個例子:

var buttonOneClick = function() { 
 
    console.log("Button has been clicked and disabled"); 
 
\t \t $(".button").off(); 
 
}; 
 
$(".button").click(buttonOneClick); 
 

 
$(".button2").click(function() { 
 
    console.log("Button has been re-enabled"); 
 
    $(".button").click(buttonOneClick); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="button"> 
 
    Click Me 
 
</div> 
 

 
<button class="button2"> 
 
    Re-enable click 
 
</button>

2

使用.one()

使用.one()不需要使用.off(),因爲該事件只允許一次。要重新啓用您只需按鈕重新調用使函數,它的.one()東西:

function buttonExec() { 
 
    console.log("Button has been clicked and disabled"); 
 
} 
 

 
function buttonEnable() { 
 
    console.log("Button has been enabled"); 
 
    $(".button").one("click", buttonExec); // .one() 
 
} 
 

 
buttonEnable();       // enable initially 
 
$(".enable").on("click", buttonEnable); // and on ".enable" click
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button class="button">Click Me</button> 
 
<button class="enable">Re-enable click</button>

使用.on().off()

function buttonExec() { 
 
    console.log("Button has been clicked and disabled"); 
 
    $(this).off("click");     // .off() since we used .on() 
 
} 
 

 
function buttonEnable() { 
 
    console.log("Button has been enabled"); 
 
    $(".button").on("click", buttonExec); // .on() 
 
} 
 

 
buttonEnable();       // enable initially 
 
$(".enable").on("click", buttonEnable); // and on ".enable" click
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button class="button">Click Me</button> 
 
<button class="enable">Re-enable click</button>

+0

我可以在.this中使用第一個.one實例來使該函數可重用嗎? – fightstarr20

+0

@ fightstarr20當然,你首先需要知道哪個'.enable'目標是'.button' - 我不知道你在找什麼,但是如果你使用'$(this)'而不是'$( 「.button」)''this'將引用'「.enable」'按鈕..這不是你想要的......你能解釋一下你的HTML結構嗎? –

+0

這是我嘗試將其應用於https://jsfiddle.net/rsxqoru7/的簡化版本 – fightstarr20