单击jQuery Dialog标题/标题上的处理程序

时间:2011-01-13 18:10:18

标签: jquery jquery-ui click jquery-ui-dialog

我似乎无法在Dialog标题/标题中添加click事件处理程序。

jQuery UI中的某些东西似乎覆盖了点击处理程序,关于如何实现这一点的任何想法?

我将它绑定到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 个答案:

答案 0 :(得分:2)

我找到了解决方案.. ui.dialog-titlebar类不是对话框引用的子代。所以我只是做dlg.parent().find('.ui-dialog-titlebar').click(...)而且一切似乎都很好!

谢谢。

答案 1 :(得分:1)

尝试使用live()代替click()。所以你会在哪里:

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

改为使用live()

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

由于jQuery UI将向DOM添加元素以创建对话框,因此在DOM准备就绪后进行绑定的初始选择时,将不会选择它们。

答案 2 :(得分:0)

以下是我的表现方式:

$(".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

    }

});