Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с методом click() (https://javascript.ru/forum/jquery/36390-problema-s-metodom-click.html)

w1ck3d 13.03.2013 20:23

Проблема с методом click()
 
Здравствуйте. Возникла проблемка с методом click(), а именно вот что.
Есть кнопка "Open", по которой открывается всплывающее окно. В этом окне есть кнопка "Print", которая отправляет некоторые данные на печать. Так вот, если открыть окно, отправить на печать текст, закрыть окно, потом опять без перезагрузки страницы открыть окно и отправить на печать текст, окно для печати будет открываться не единожды, а дважды. Подскажите, пожалуйста, как решить эту проблему? Обновление страницы не подходит.

P.S. Как я понимаю, нужно обнулить событие нажатия кнопки или что то в этом роде, но не знаю как это сделать.

skynet-mfd 14.03.2013 14:16

что за окно, <div> с z-index > 1 ? И как событие привязано на кнопку?

w1ck3d 15.03.2013 17:38

Цитата:

Сообщение от skynet-mfd (Сообщение 240675)
что за окно, <div> с z-index > 1 ? И как событие привязано на кнопку?

Нет. Точней, просто <div>, открываемый при помощи плагина arcticModal(). Привязано при помощи id кнопки, т.е. при нажатии выполняется

$("#btnID").click(function() {
   // обработка
});


Хотя вот еще что. Эта кнопка появляется только когда:
$("#selectID").change(function() {
    // код
    $(".trClass").dblclick(function() {
        // код
        $("#btnID").click(function() {
            // код
        });
    });
});

danik.js 15.03.2013 19:48

Перевожу на русский язык ваш код:
При каждом изменении #selectID создаем еще один обработчик dblclick (то есть если он уже создан - будет еще одна его копия), по каждому dblclick событию создаем еще один обработчик события click. То есть у вас даже логика создания обработчиков неверная.

skynet-mfd 18.03.2013 15:56

юзай так, для несуществющих элементов:
и убери там свою "матрешку", не привязывай этот обработчик 10 раз просто выполни где нибудь 1 раз и все
$("#btnID").live('click',function() {
   // обработка
});

cbone 19.03.2013 13:19

Цитата:

Сообщение от skynet-mfd (Сообщение 241378)
юзай так, для несуществющих элементов:
и убери там свою "матрешку", не привязывай этот обработчик 10 раз просто выполни где нибудь 1 раз и все
$("#btnID").live('click',function() {
   // обработка
});

Будьте аккуратны с live, в последней версии его исключили. Используйте
$(this).on('click', function(){
...
});


Часовой пояс GMT +3, время: 01:08.