jQuery - .off()这个

时间:2014-04-17 20:24:11

标签: jquery

我有一张地图更改了它的coordonated,名称和ID,与ajax $ .post:

<map name="diffmap1" id="diffmap1">
<area  shape="poly" coords="76,269,50,243,51,221,82,255" class="diff diff1" onFocus="blur();" >
<area shape="poly" coords="152,347,253,292,264,307,167,358" class="diff diff2" onFocus="blur();" >
<area shape="poly" coords="93,244,164,215,171,233,97,264" class="diff diff3" onFocus="blur();" >
</map>

Jquery的:

$(document).on('mousedown', '.diff', function () {
e.preventDefault();
$(document).off('mousedown', $(this));
});

Ajax响应:

$('map').attr('name', 'diffmap'+response.next).attr('id', 'diffmap'+response.next);
$('#diffmap'+response.next+' .diff3').attr('coords', response.nextcoord[0]);
$('#diffmap'+response.next+' .diff1').attr('coords', response.nextcoord[1]);
$('#diffmap'+response.next+' .diff2').attr('coords', response.nextcoord[2]);

我希望当我点击一个coordonate取消绑定时,所以你只能点击一次,而且当我进入下一个级别时,ajax会更改coordonates以便能够再次单击它们。

如果我使用:

 $(document).off('mousedown', $(this));

它不起作用,或者我使用

 $(document).off('mousedown', '.diff');
当我点击其中一个时,它将解除所有协调器的绑定。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用委托时,您无法关闭单个元素。我建议您使用data,就像那样:

$(document).on('mousedown', '.diff', function () {
    e.preventDefault();
    if($(this).data('__off') !== true){
         $(this).data('__off', true);
         //Your function here.
    }
 });

答案 1 :(得分:0)

您可以添加/删除类以启用/禁用mousedown,例如:

$(document).on('mousedown', '.diff', function (e) {
    e.preventDefault();
    $(this).removeClass("diff");
});