jQuery - .off () это

0

У меня есть одна карта, которая меняет ее координацию, имя и идентификатор, динамически с помощью 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]);

Я хочу, когда я нажимаю на одну координацию, чтобы отвязать ее, поэтому вы можете щелкнуть только один раз, а затем, когда я перехожу на следующий уровень, и ajax изменяет координаты, чтобы снова щелкнуть их.

Если я использую:

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

это не работает, или если я использую

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

чем он отменит все координаты, когда я нажму на один из них.

Есть предположения?

Теги:

2 ответа

1
Лучший ответ

При использовании делегирования нельзя отключить один элемент. Я предлагаю вам использовать data, просто так:

$(document).on('mousedown', '.diff', function () {
    e.preventDefault();
    if($(this).data('__off') !== true){
         $(this).data('__off', true);
         //Your function here.
    }
 });
  • 0
    Это работает, но когда я перехожу на следующий уровень, я больше не могу нажимать на новые вставленные координаты (от ajax).
  • 0
    @MarinescuEdward После того, как ваш ajax завершен, добавьте $('.diff').data('__off', false);
Показать ещё 3 комментария
0

Вы можете добавить/удалить класс для включения/отключения mousedown, например:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню