Moz*_*Moz 3 javascript php ajax jquery
我有通过Ajax加载的php文件的内容,其中包含HTML和JavaScript.我有一个按钮:
<button class="search_button">Search</button>
Run Code Online (Sandbox Code Playgroud)
我在下面有一个脚本,它将从jQuery函数更新文档哈希
<script type="text/javascript">
$(".search_button").click(function() {
var searchTerm = $('#search_box').val();
document.location.hash="searchTerm";
return false;
});
</script>
Run Code Online (Sandbox Code Playgroud)
当我单独运行php文件时,此代码有效,但是当从Ajax调用加载此页面时,该函数不再运行.在firebug中,脚本不存在所以我假设我无法在使用此方法时加载脚本.我还尝试将JavaScript代码段改为整个网站的标题,但这也失败了.
我也在考虑当有一个search_button类已经存在时,可能必须声明该函数,但是当我以前将它们放在一个文件中时(通过Ajax检索)它是以这种方式构造的,所以我很困惑至于问题.
您可以通过直播活动在全球范围内添加它:
$(".search_button").live('click', function() {
var searchTerm = $('#search_box').val();
document.location.hash="searchTerm";
return false;
});
Run Code Online (Sandbox Code Playgroud)
jQuery会自动评估脚本块,你无法在HTML中看到该功能,因为它已被剥离.但它应该已经运行了.问题很可能是时机问题.你可以做点什么
setTimeout(function(){
$(".search_button").click(function() {
var searchTerm = $('#search_box').val();
document.location.hash="searchTerm";
return false;
});
}, 500);
Run Code Online (Sandbox Code Playgroud)
因此,当脚本加载时,它等待执行(希望给jquery时间用新元素更新DOM).
从jQuery 1.7开始,不推荐使用.live()方法.使用.on()附加事件处理程序.旧版jQuery的用户应该使用.delegate()而不是.live().
此方法提供了将委托事件处理程序附加到页面的文档元素的方法,这简化了在将内容动态添加到页面时使用事件处理程序的方法.有关详细信息,请参阅.on()方法中有关直接事件与委派事件的讨论.
根据其后继者重写.live()方法很简单; 这些是用于所有三种事件附件方法的等效调用的模板:
$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+
Run Code Online (Sandbox Code Playgroud)
使用.on()绑定click事件的示例
$(document).on("click", "#post a", function(){
alert("1");
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7829 次 |
| 最近记录: |