我有像facebook显示图像一样的图像脚本。而且我想在未来添加更多评论,但我不知道该怎么做。加载更多注释的函数执行两次。我制作了这个描述我问题的简单代码。 my simple code。有没有办法阻止函数执行。
$(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
}
});
}
答案 0 :(得分:0)
您应该尝试将代码拆分为函数,这样会更容易理解。
要回答您的问题,您有两种选择:
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
}
}
$( "....").unbind( "click" );
希望这有帮助!