Как предотвратить событие div.click при нажатии на другой элемент

0

Я хочу предотвратить событие click, но e.stopPropagation() не работает.

Я пытаюсь написать что-то вроде Jtable. Я использую div как кнопки разбивки на страницы (1), а другой элемент - кнопка удаления.

Мне нужно отключить кнопки разбиения на страницы, когда появляется окно подтверждения удаления. После нажатия del или отменить "Я хочу, чтобы мои кнопки разбиения на страницы снова работали". Есть ли решение? Изображение 174551

function deleteit() {
  $(".del").click(function() {
    $(".divbutton").click(function(e) {
    alert(1);   
    e.stopPropagation(); 
  });
}

$(".deletebtn").click(function() {
  deleteit();
});

$(".divbutton").click(function() { // I want to prevent this from click
  //ajax send and display data
});

Я знаю, что я должен использовать отключенный ввод вместо div, но мне нужно использовать div. edit: добавьте изображение, чтобы сделать его понятным.

  • 0
    Какая часть относится к "div.click" и какая часть относится к "другим элементам"
  • 0
    Пожалуйста, исправьте свой отступ. И ваш синтаксис недействителен. Трудно сказать, что вы пытаетесь сделать.
Показать ещё 1 комментарий
Теги:

1 ответ

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

Вместо того, чтобы препятствовать обработчику кликов... удалить зарегистрированный обработчик с помощью .off(), здесь используется имя имен с именами, потому что мы хотим удалить только очень специфический обработчик

function deleteit() {
    $(".del").click(function () {
        $(".divbutton").off('click.delete')
    })
}

$(".deletebtn").click(function () {
    deleteit();
});

$(".divbutton").on('click.delete', function () { // I want to prevent this from click
    //ajax send and display data
});

Почему ваш код не работает? потому что прекращение распространения будет препятствовать divbutton события, но в вашем случае оба события регистрируются в divbutton так что оба они будут активированы, даже если распространение запрещено.

Другой способ - использовать stopImmediatePropagation(), даже если это невозможно, потому что ваше удаление позже регистрирует обработчик, и оно будет выполнено только после вызова первого

Ещё вопросы

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