小编典典

使用随Ajax内容加载的jQuery'click'函数?

ajax

我有一个通过Ajax加载的php文件的内容,该文件包含HTML和JavaScript。我有一个按钮:

<button class="search_button">Search</button>

我下面有一个脚本,它将通过jQuery函数更新文档哈希

<script type="text/javascript">
  $(".search_button").click(function() {
    var searchTerm = $('#search_box').val();         
    document.location.hash="searchTerm";
    return false;
  });
</script>

当我分别运行php文件时,此代码有效,但是从Ajax调用加载此页面时,该功能不再运行。在Firebug中,脚本不存在,因此我假设无法使用此方法加载脚本。我还尝试将JavaScript代码段放在整个网站的标头中,但这也失败了。

我也在想也许已经存在一个search_button类时就必须声明该函数,但是当我以前将它们放在一个文件(通过Ajax检索)中无济于事时,它的结构是这样的,我感到困惑关于这个问题。


阅读 263

收藏
2020-07-26

共1个答案

小编典典

您可以在现场直播活动中将其包括在全局范围内:

  $(".search_button").live('click', function() {
    var searchTerm = $('#search_box').val();         
    document.location.hash="searchTerm";
    return false;
  });

jQuery将自动评估脚本块,您无法在HTML中看到该函数,因为该函数已被剥离。但是它应该已经运行了。问题很可能是时间安排。你可以做类似的事情

setTimeout(function(){  
    $(".search_button").click(function() {
        var searchTerm = $('#search_box').val();         
        document.location.hash="searchTerm";
        return false;
    });
}, 500);

这样,当脚本被加载时,它等待执行(希望给jquery时间用新元素更新DOM)。

2020-07-26