我有一个共同的js文件 在我重新加载ajax请求中的html页面之后,我无法访问此文件中的函数, $(document).ready(function()之间的常见JS函数 如何访问它们并触发公共文件中的函数 示例:
COMMON JS:
$(document).ready(function() {
$(".agree_btn").click(function(){
alert(123);
});
});
phtml 页面中的功能
$('.loadMoreAnswers').live('click', function(event) {
var location_id = $(this).attr('location_id');
var counter= $(this).attr('counter');
$('#loadingAnswer').show();
$.ajax({
type: 'POST',
url: '/daleel/loadmore',
data: 'location_id='+location_id+'&part='+'answers'+'&answerCounter='+counter, //with the page number as a parameter
success: function(msg){
if(msg.length!=0) //if no errors
{ $(this).parent().load("view")
$('#loadingAnswer').remove();
counter+=5;
$('#profile-page-answer').append(msg);
}
else $("#loadingAnswer").remove();
},
dataType: 'html'
});
});
它渲染HTML就像这样:
<a agreed="no" agreed-content-id="63066" class="agree_btn" id="agree-a63066">
Agree
</a>
但是当我点击此链接时 它不会运行Common JS文件中的函数
答案 0 :(得分:8)
重新绑定ajax成功中的click事件处理程序
success: function(msg){
//your code
$(".agree_btn").bind('click');
}
或者您可以将delegate
用于低于1.7的jQuery版本,如
$(document).delegate(".agree_btn",'click',function(e){
//your code
});
或者您正在使用jQuery版本1.7+使用on
方法
$(document).on("click",".agree_btn",function(e){
//your code
});
不要使用.live
已弃用的docs
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()来 附加事件处理程序。旧版jQuery的用户应该使用 .delegate()优先于.live()。
答案 1 :(得分:0)
在常见的js文件中使用live()
。例如
$('selector').click(function(){
//function body
})
而不是这个用途
$('selector').live('click', function(){
//function body
})
答案 2 :(得分:0)
在ajax完成后嵌入document.ready函数。在ajax调用之后,它将在页面上重新注册脚本。 E:
$.ajax({
url: 'deleteEntry',
data: {'ids': JSON.stringify(getList)},
async: true,
success: function (data) {
location.reload();
},
error: function (data) {
alert('error');
},
complete: function (data) {
//add your script in body here
}
});