Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在导入的页面行上运行母版页脚本_Javascript_Php_Jquery_Html - Fatal编程技术网

Javascript 在导入的页面行上运行母版页脚本

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> 但是它没有在上面运行上面提到的功能,而是完全忽略了它,而是打开了一个新页面 所以基本上。。

我正在使用如下链接将一些php导入div块

和这样的脚本(使用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();
    });
}