我想在第一次点击后取消绑定锚点,但是当用户点击特定按钮时,我想将点击事件重新绑定到此锚点
我写了这段代码
$(document).ready(function(){
$("a.package").click(function(){
//alert('click');
$(this).unbind('click');
// the rest of the code
});
$('#activate').click(function(){
$('a.package').bind('click');
// the rest of the code
});
});
unbind函数运行良好,但绑定函数不起作用,为什么?以及如何使它工作?
答案 0 :(得分:4)
将您的点击功能存储在变量中,以便轻松重新分配...
$(document).ready(function() {
var onclick = function(e) {
//alert('click');
$(this).unbind('click');
// the rest of the code
}
$("a.package").click(onclick);
$('#activate').click(function() {
$('a.package').click(onclick);
// the rest of the code
});
});
答案 1 :(得分:0)
你必须将一个回调传递给bind,它一旦被解除绑定就不记得了。在#activate.click中再次指定绑定时的含义,您必须在那里指定函数。可能最好的方法是指定其他函数,并将其用于绑定调用。 在下面的例子中,我使用jquerys .data在'clickFunc'下存储一个函数,然后使用它作为.click的回调。你也可以使用var。
$(document).ready(function(){
$("#package").data('clickFunc', function () {
alert("Click");
$(this).unbind('click');
})
console.log($('#package').oclick);
$("#package").click($('#package').data('clickFunc'));
$('#activate').click(function(){
$("#package").click($('#package').data('clickFunc'));
// the rest of the code
});
});
答案 2 :(得分:0)
尝试将第一个绑定更改为.one()。
$("a.package").one("click", function(){
// alert('click');
// $(this).unbind('click'); <-- no need, using .one
// call your "when clicked" function
});
$('#activate').click(function(){
$('a.package').click(<your "when clicked" function>);
});