我有一个通过Ajax加载的包含HTML和JavaScript的php文件的内容。我有一个按钮:
<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代码段放在整个网站的 header 中,但这也失败了。
我还想也许当已经存在一个search_button类时就必须声明该函数,但是当我以前将它们放在一个文件(通过Ajax检索)中无济于事时,它的结构是这样的,我感到困惑关于这个问题。
最佳答案
您可以在现场直播 Activity 中将其包括在全局范围内:
$(".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)。