0

我已经为父 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');
});

现在我想在单击按钮后删除特定 div 的 mousedown 处理程序。我怎么做?删除attr mousedown似乎不起作用。

4

3 回答 3

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);
});

更多信息:http ://api.jquery.com/one/

于 2013-10-29T15:43:39.203 回答
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');
});
于 2013-10-29T15:44:08.967 回答
1

代替 :

$(this).removeAttr('mousedown');

利用 :

$(this).unbind('mousedown');

或者

$(this).off('mousedown');
于 2013-10-29T15:44:10.263 回答