Нажмите обработчик заголовка / заголовка диалога jQuery. - PullRequest
0 голосов
/ 13 января 2011

Не получается добавить обработчик события щелчка в заголовок / заголовок диалога.

Что-то в пользовательском интерфейсе jQuery, кажется, переопределяет обработчик кликов, есть идеи, как мне это сделать?

Я связываю это с ui-dialog-titlebar классом:

var dlg = $("#dlg_"+id).dialog({ ... });
dlg.find('.ui-dialog-titlebar').click(function() {
    alert("test");
});

Если я попытаюсь alert(dlg.find('.ui-dialog-titlebar'));, это предупредит меня об объекте. Но если я сделаю $('.ui-dialog-titlebar').click(function() { alert("test"); });, тогда он будет работать нормально, но это не вариант, так как у меня есть несколько диалогов.

Я нашел решение, я ответил как ответ ниже.

Ответы [ 3 ]

2 голосов
/ 13 января 2011

Я нашел решение .. класс ui.dialog-titlebar не является дочерним элементом ссылки на диалог.Так что я просто сделал dlg.parent().find('.ui-dialog-titlebar').click(...), и все, кажется, работает отлично!

Спасибо, хотя.

1 голос
/ 13 января 2011

Попробуйте использовать live() вместо click().Итак, где бы вы имели:

$('.ui.dialog-titlebar').click(function() {});

используйте вместо live():

$('.ui.dialog-titlebar').live('click', function() {});

Поскольку пользовательский интерфейс jQuery будет добавлять элементы в DOM для создания диалоговых окон, они не будутвыбирается, когда вы делаете начальный выбор для привязки сразу после того, как DOM готов.

0 голосов
/ 23 августа 2014

Вот как я это делаю:

$(".ui-dialog").on('click','.ui-dialog-titlebar', function() {});

Обратите внимание, что вышеизложенное является общим для всех диалогов.

Для конкретного диалога вы можете сделать это:

$(".ui-dialog").on('click','.ui-dialog-titlebar', function() {

    var d=$(this).next();

    if(d.attr('id')=='dialogIdHere'){

       //do stuff here

    }

});
...