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

标签 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 加载页面,页面加载正确,但是当我单击对话框内的另一个链接时,单击的链接将在浏览器窗口中打开,而不是在对话框内打开。我听说使用点击处理程序是执行此操作的正确方法(链接在对话框内打开),但我不确定如何使用 jQuery UI Dialog 来实现它.

谢谢!

最佳答案

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

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

附注:

  1. 您似乎滥用了 ID 属性。每个 ID 只能有一个元素。看到 $('#XXX').each() 表明您有超过 1 个项目。处理这些事情的正确方法是给这些元素一个 CSS 类,并使用 $('.XXX').each();
  2. 不必使用 each:$('#XXX').click(function() { }) 将指定的函数应用于每个元素。

关于javascript - jQuery UI 对话框 - 在已打开的 jQuery UI 对话框中保留单击的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4732044/

相关文章:

javascript - 如何从 javascript 函数返回 true 和值?

jquery - 手动将 jquery 和 jquery-ui 添加到 grails 项目

javascript - 删除字符的最后两个实例

javascript - 如何将容器的高度设置为视口(viewport)高度减去 300 像素的高度 slider ?

JavaScript:如何将多字节字符串数组转换为 32 位 int 数组?

jquery - 通过 jQuery 键盘提交

jquery - 动画和 ajax 调用成功完成后如何正确触发回调?

javascript - 单击 jQuery Accordion header 内的链接

javascript - 如何显示数字输入类型的自定义验证消息

javascript - 检查标签是否存在