我已经为父div中的所有div添加了一个mousedown处理程序,如下所示:
$productContainer.children(".button").on('mousedown', function(){
var index = $(this).index();
console.log("Clicked button at " + index);
// this doesnt work
$(this).removeAttr('mousedown');
});
现在我想在单击按钮后删除mousedown处理程序,用于该特定div。我怎么做?删除attr mousedown
似乎无效。
答案 0 :(得分:3)
使用off
方法:
$productContainer.children(".button").on('mousedown', function(){
var index = $(this).index();
console.log("Clicked button at " + index);
$(this).off('mousedown');
});
更多信息:http://api.jquery.com/off/
您也可以使用one
方法。它将在第一次触发时自动删除您的事件处理程序:
$productContainer.children(".button").one('mousedown', function(){
var index = $(this).index();
console.log("Clicked button at " + index);
});
答案 1 :(得分:1)
使用.off
描述:删除事件处理程序。
$productContainer.children(".button").off('mousedown');
$productContainer.children(".button").on('mousedown', function(){
var index = $(this).index();
console.log("Clicked button at " + index);
// this doesnt work
$(this).removeAttr('mousedown');
});
答案 2 :(得分:1)
而不是:
$(this).removeAttr('mousedown');
使用:
$(this).unbind('mousedown');
或
$(this).off('mousedown');