停止要执行两次的Jquery函数
我有一个图像脚本,就像facebook显示图像的方式一样。我想在将来添加更多的评论,但我不知道怎么做。加载更多注释的函数执行两次。我编写了这个简单的代码来描述我的问题。是否有方法停止函数的执行停止要执行两次的Jquery函数,jquery,Jquery,我有一个图像脚本,就像facebook显示图像的方式一样。我想在将来添加更多的评论,但我不知道怎么做。加载更多注释的函数执行两次。我编写了这个简单的代码来描述我的问题。是否有方法停止函数的执行 $(document.body).on('click', '.u_img' ,function(e){ e.preventDefault(); var img_id = $(this).attr('data-imgid'); $('#overlay').css('display',
$(document.body).on('click', '.u_img' ,function(e){
e.preventDefault();
var img_id = $(this).attr('data-imgid');
$('#overlay').css('display','block');
$.ajax({
url: base_url+"home/get_info_and_comments",
async: false,
type: "POST",
data: "img_id="+img_id,
dataType: "html",
success: function(data) {
$("#overlay_info").html(data);
load_more(image_id);
$("#cntrlnxpr a").on('click', function (d) {
d.preventDefault();
var img_id2 = $(this).data("imgid");
$.ajax({
url: base_url+"home/get_comments",
async: false,
type: "POST",
data: "img_id="+img_id2,
dataType: "json",
success: function(data2) {
$("#sldhlper").load(base_url+"home/get_more_comments/"+data2['id']);
load_more(data2['id']);
}
});
});
}
});
});
function scroll_func (my_var) {
$('.container').scroll(function() {
var erthis = $(this);
var height = erthis.height();
var all = erthis[0].scrollHeight;
var top = erthis.scrollTop();
if (top == all - height)
{
// load more data
}
});
}
您应该尝试将代码拆分为函数,这样会更容易理解 要回答您的问题,您有两个选项: 1-使用布尔变量确定函数是否应执行
var eventOneExecute = true;
var eventTwoExecute = false;
And then, in the first event, you swap those values.
// $(...).on('click', function() {
if (eventOneExecute) {
eventOneExecute = false;
eventTwoExecute = true;
// Do stuff
}
}
2-这是最好的做法,一旦你不想再执行事件,你就解除它的绑定。
希望这有帮助 为什么要将事件处理程序绑定到函数中?@Satpal没有编写两次代码,而是将其放入函数中抱歉,我没有收到您的建议question@phenxd请参阅我上面提供的链接中的JSFIDLE。并查看控制台日志。因此,在您滚动到底部后,将执行一个正常的函数。当您单击Loadmoredata并滚动到底部时,您会注意到该函数在控制台日志中执行了两次,但我需要一种忽略第一个事件处理程序的方法,因为我通过ajax获取新数据
$( "....").unbind( "click" );