<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) {})
捕获所有项目的点击事件,即使它们已添加到页面稍后阶段。
附注:
- 您似乎滥用了 ID 属性。每个 ID 只能有一个元素。看到
$('#XXX').each()
表明您有超过 1 个项目。处理这些事情的正确方法是给这些元素一个 CSS 类,并使用$('.XXX').each();
- 不必使用
each
:$('#XXX').click(function() { })
将指定的函数应用于每个元素。
关于javascript - jQuery UI 对话框 - 在已打开的 jQuery UI 对话框中保留单击的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4732044/