jQuery UI对话框 - 在已打开的jQuery UI对话框中保留一个单击的链接

时间:2011-01-19 05:31:46

标签: javascript jquery jquery-ui jquery-ui-dialog

<script type="text/javascript"> 
$(document).ready(function() {
    $('#mardicion').each(function() {
        var $link = $(this);


        $link.click(function() {
            var $dialog = $('<div></div>')
                .load($link.attr('href') + ' #content')
                .dialog({
                    autoOpen: false,
                    title: $link.attr('title'),
                    width: (pageWidth()*0.9),
                    height: (pageHeight()*0.9)
                });
                $dialog.dialog('open');

                return false;
        });
    });
});
</script>

当我点击链接时,我使用上面的javascript加载页面,页面正确加载但是当我单击对话框内的其他链接时,单击的链接在浏览器窗口中打开而不是在对话框内。我听说使用点击处理程序是正确的方法(链接在Dialog中打开),但我不知道如何使用jQuery UI Dialog来实现它。

谢谢!

1 个答案:

答案 0 :(得分:2)

您将使用live()功能。在某个时间(我猜是在页面加载时),您将点击事件处理程序附加到ID为mardicion的特定数量的项目。当页面加载到您的对话框中时,该页面内的链接即使可能具有madicion ID,也不会将其点击事件连接起来。

使用$('#madicion').live('click' , function(e) {})来捕捉所有项目的点击事件,即使它们稍后会添加到页面中。

作为旁注:

  1. 您好像滥用了ID属性。每个ID只允许一个元素。查看$('#XXX').each()表示您有多个项目。处理这些事情的正确方法是给这些元素一个CSS类,并使用$('.XXX').each();
  2. 不需要使用each$('#XXX').click(function() { })将声明的函数应用于每个元素。