У меня есть одна карта, которая меняет ее координацию, имя и идентификатор, динамически с помощью 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');
чем он отменит все координаты, когда я нажму на один из них.
Есть предположения?
При использовании делегирования нельзя отключить один элемент. Я предлагаю вам использовать data
, просто так:
$(document).on('mousedown', '.diff', function () {
e.preventDefault();
if($(this).data('__off') !== true){
$(this).data('__off', true);
//Your function here.
}
});
Вы можете добавить/удалить класс для включения/отключения mousedown, например:
$(document).on('mousedown', '.diff', function (e) {
e.preventDefault();
$(this).removeClass("diff");
});
$('.diff').data('__off', false);