问候大师,这有点难以解释,但我会试一试.
我有一个关于JQuery中的.live()函数的快速问题.我将在这里简化示例.我有一个页面"index.php",它有一个容器"#display_files_container",其中填充了由不同页面"process.php"动态生成的锚链接. 的index.php PROCESS.PHP 此文件包含用于根据从index.php中的.click()方法发送的post变量"$ _POST ['dirid']"从数据库填充$ current_directory_list []数组的代码.然后它回显结果,我们将它们显示在#display_files_container容器中.当您单击这些链接时,该过程会重复. 这可以.....你可以点击目录树,每次都加载新的链接.但是,它似乎想要多次执行.load()process.php文件.加载process.php的次数似乎越多,单击链接的次数就越多.所以例如你可以点击一个链接和firebug报告process.php加载了23次.....最终我会想象我会记录一个stackoverflow.如果您有任何想法,请告诉我.有什么办法可以保证.live()只加载process.php文件一次吗? 谢谢,-cs 会发生什么,每次单击链接时,都会将新的单击事件处理程序绑定到每个链接.这是可能的,因为特定事件可以有多个处理程序.您必须在处理程序中返回false以停止事件冒泡. 更新:我不确定为什么处理程序会多次绑定,但我的猜测是它与"实时事件"实现的特殊性有关.见事件代表团从文档: 传递给.live()的处理程序永远不会绑定到元素; 相反,.live()将特殊处理程序绑定到DOM树的根. 另一种解决方案是使用bind()或click()而不是live(),并在加载ajax后显式调用它:
1> jholster..:
function bind_link_handler() {
$('.directory').click(function() {
$('#display_files_container').load('...', bind_link_handler);
})
}
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有