自定义延迟加载函数将数据加载到容器中后,jQuery函数OnClick不起作用
jQuery function OnClick doesn't work after the custom lazy load function loads the data into the container
我用jQuery创建了自己的自定义延迟加载函数。懒惰加载方面的一切都很好。当来自服务器的html数据被附加到容器中时,jQuery函数$(".send-comment").on("click");不起作用,但是当它没有惰性加载时,它工作得很好。
JavaScript/** JavaScript that executes then hit bottom of the document (Lazy Load functionality)*/
$(window).scroll(function () {
if ($('body').height() <= ($(window).height() + $(window).scrollTop())) {
var limit, pageOffSetAttr, url, dataID;
url = "/ajax/lazy-post.php";
limit = 5;
dataID = $("#pageOffSetAttr").attr("data-id");
pageOffSetAttr = $("#pageOffSetAttr").val();
pageOffSetAttr = parseInt(pageOffSetAttr) + limit;
pageOffSetAttr = $("#pageOffSetAttr").val(pageOffSetAttr);
pageOffSetAttr = $("#pageOffSetAttr").val();
$.post(url, {pageOffSetAttr:pageOffSetAttr, dataID:dataID}, function(data){
$(".feeds-unit-container").append(data);
});
}
});
/** AJAX the send comment */
$(".send-comment").on("click", function(){
var callback, context, url, dataAjax, dataID, code, msg;
callback = $(this).attr("data-add-back-btn");
url = "ajax/update-status.php";
context = $("input#new-comment-" + callback ).val();
dataAjax = $("input#new-comment-" + callback ).attr("data-ajax");
dataID = $("input#new-comment-" + callback ).attr("data-id");
$.post(url, {callback:callback, dataAjax:dataAjax, dataID:dataID, context:context}, function(data){
data = data.split("|");
code = $.trim(data[0]);
msg = $.trim(data[1]);
$("input#new-comment-" + callback ).val("");
$("#feeds-comment-" + dataID).fadeIn("fast").prepend(data);
});
});
HTML Side from Lazy Load PHP Script
<div class="row margin0" id="wall-post-#">
<div class="col-md-4 pad0 parent-profile-image">
<a href="#">
<img alt="#" title="#" src="#" width="50" height="50">
</a>
</div>
<div class="col-md-8 pad0 parent-profile-details">
<ul class="pad0">
<li class="name"><a href="#" class="bold">#</a>
<li class="post"><p>#</p></li>
<li class="likes">
•<a href="#" class="post-delete delete-post" data-ajax="delete-post" data-id="#">Delete</a>
•<a href="#" class="post-comment">Comment</a>
•<span class="post-time gray">#</span>
</li>
<li class="comment bg-default">
<!-- Comment Box -->
<li class="stats gray commentbox">
<div class="row margin0">
<div class="col-md-4 pad0 commentbox-image">
<img alt="#" title="#" src="#" width="30" height="30">
</div>
<div class="col-md-8 pad0 comment-details f12" style="width: 90%;">
<ul class="pad0">
<li class="">
<p class="margin0">
<input id="new-comment-#" type="text" class="pull-left" data-ajax="send-comment" data-id="#" placeholder="Write a comment..."/>
<button data-add-back-btn="#"type="button" class="send-comment" title="Send Comment..."></button>
</p>
</li>
</ul>
</div>
</div>
</li>
<!-- ** Comment Box -->
<!-- Comment Feeds -->
<li class="stats gray comment-feeds">
<ul class="pad0" id="feeds-comment-#">
<li class="name pad2" id="feeds-comment-#">
<div class="col-md-4 pad0 comment-image">
<a href="#">
<img alt="#" title="#" src="#" width="50" height="50">
</a>
</div>
<div class="col-md-8 pad0 comment-details f12">
<p><a class="bold" href="#">#</a>#</p>
<div class="col-md-8 pad0 comment-iteractions f12">
•<a href="#" class="post-delete feed-delete-comment" data-ajax="delete-comment" data-id="#">Delete</a>
•<span class="post-time gray">#</span>
</div>
</div>
</li>
</ul>
</li>
<li class="stats gray comment-feeds">
<ul class="pad0" id="feeds-comment-#">
</ul>
</li>
<!-- ***Comment Feeds -->
</li>
</ul>
</div>
</div>
尝试使用委托
改变$(".send-comment").on('click', function(....
$(document).on('click', ".send-comment", function(....
当你第一次运行$(".send-comment")
时,它是空的(即$(".send-comment").length === 0
,直到内容被附加到DOM,你才能bind
。
尝试将当前的bind
逻辑添加到$.post
callback
。
如果您想将事件附加到dom元素上,而这些dom元素现在没有附加到don上(例如,将在Ajax请求时附加),您应该使用以下
$( document ).on( events, selector, data, handler ); // jQuery 1.7+
例如:$( document ).on( "click", ".sent-comment", function(){...});
事件处理程序仅绑定到当前选定的元素;它们必须在代码调用.on()时存在于页面上。
所以你的问题是未来的DOM不能正确地绑定事件。为未来的DOM元素修复。
的解决方案相当于。live()将是类似
的东西/** AJAX发送注释*/
美元(文档)。("点击"、"。Send-comment ", function(){
// your code here
});
相关文章:
- 将字符串作为参数传递给函数onclick event jquery
- 将具有特殊字符的值传递给函数onclick事件
- 如何调用mask()jquery函数onclick
- 脚本不会使用 ajax 函数 onClick 和 $_POST 获取变量
- 如何使用JavaScript函数(onclick)在URL中添加我的“No”或“ID”
- jquery 函数 onclick 和 onload myFunction 不是一个函数
- 我们可以调用两个函数 onClick 事件吗?
- 将值传递给 JavaScript 函数 onclick
- jQuery 函数 onclick (span class) 来自 jquery datepicker
- 调用函数onClick,并将元素's的data-*属性
- 运行函数onclick.正在单击的所有按钮
- 正在启动一个函数onclick(),该函数传递被单击元素的id
- 第二个函数onclick没有被调用
- HTML执行不同的php函数onclick
- 调用javascript函数onclick=“;fn1()”;并且onclick=“;javascript:fn1()&
- 触发javascript函数onclick
- 如何在函数onClick中转换值
- 启动按钮下拉赢得't运行函数onclick
- Javascript更多函数onclick和ClassName
- 向函数'onclick'添加SQL