我有一个通过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检索)中无济于事时,它的结构是这样的,我感到困惑关于这个问题。
您可以在现场直播活动中将其包括在全局范围内:
$(".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)。