Javascript 在导入的页面行上运行母版页脚本
我正在使用如下链接将一些php导入div块Javascript 在导入的页面行上运行母版页脚本,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我正在使用如下链接将一些php导入div块 和这样的脚本(使用jqueryload填充div块) 现在让我们假设在运行php部分之后加载的php文件还包含一个带有“AjaxLink”类的链接,我希望该链接也能更改该div块的内容 <?php ... ?> <a class="ajax-link" href="view.php">View content</a> 但是它没有在上面运行上面提到的功能,而是完全忽略了它,而是打开了一个新页面 所以基本上。。
和这样的脚本(使用jqueryload填充div块)
现在让我们假设在运行php部分之后加载的php文件还包含一个带有“AjaxLink”类的链接,我希望该链接也能更改该div块的内容
<?php
...
?>
<a class="ajax-link" href="view.php">View content</a>
但是它没有在上面运行上面提到的功能,而是完全忽略了它,而是打开了一个新页面
所以基本上。。。如何在页面的导入部分运行该脚本?此代码需要重新运行。。。动态添加的对象不包括在以前的单击中
$("a.ajax-link").on("click", function(e) {
e.preventDefault();
$("#body-element").load(this.href);
});
。。。你也可以。。。关掉老守望者
$("a.ajax-link").off("click");
更新:
试试看
$("a.ajax-link")
.off("click")
.on("click", function(e) {
e.preventDefault();
$("#body-element").load(this.href);
});
这就是事件委派派上用场的地方
$(document.body).on("click", "a.ajax-link", function(e) {
// ...
});
您还必须在新添加的链接上应用click listener,因为在应用click listener时,必须将元素加载到DOM中才能应用它。但是,如果您只是重新运行相同的代码,您可能会遇到在第一个ajax链接上有两个事件侦听器的问题 试试这个:
// We still use on doc ready to be sure the
// first link is present before applying listener
$(function()
{
// Reset all listeners on ajax-links and
// then apply listeners via function
resetAjaxLinks();
});
// This function will remove any ajaxlink
// listeners and then apply them correctly
function resetAjaxLinks()
{
// Remove event listeners and then on click....
$("a.ajax-link").off('click').on("click", function(e)
{
// Prevent default link action...
e.preventDefault();
// Load in your content...
$("#body-element").load(this.href);
// Once content is loaded in, reset event listeners!
resetAjaxLinks();
});
}
编辑:这不是最好的方法。相反,使用由指定的事件委派。执行绑定
单击处理程序的代码时,第二个元素不是DOM的一部分。请阅读jQuery的。on
文档,了解如何让它包含“未来”元素。在不复制第一个链接上的侦听器的情况下,将侦听器重新应用于加载的内容的最佳方法是什么?哦。。。我喜欢这种方法。处理动态添加好吗?很好的答案!Yeah@rfornal-委托事件的优点是,它们可以处理来自后代元素的事件,这些子元素在以后添加到文档中。发件人:我需要能够找到最喜欢的答案@至少你可以喜欢这个问题,因此你总是能在附近找到答案。只需点击第一个问题左边的星星。
// We still use on doc ready to be sure the
// first link is present before applying listener
$(function()
{
// Reset all listeners on ajax-links and
// then apply listeners via function
resetAjaxLinks();
});
// This function will remove any ajaxlink
// listeners and then apply them correctly
function resetAjaxLinks()
{
// Remove event listeners and then on click....
$("a.ajax-link").off('click').on("click", function(e)
{
// Prevent default link action...
e.preventDefault();
// Load in your content...
$("#body-element").load(this.href);
// Once content is loaded in, reset event listeners!
resetAjaxLinks();
});
}