我尝试通过删除用于触发 JavaScript 中行为的选择器来暂时禁用某个函数。即使选择器 (.next) 被删除,该函数仍然可以工作。
beta.art89.se 是网页。单击一个项目,然后单击右下角指向右侧的箭头以激活。
代码:
$.showElement = function( index ) {
last_prev_object = $('#pagination .prev').clone(true);
last_next_object = $('#pagination .next').clone(true);
var project_html = $.parseElement(index);
if(project_html != '') {
$(".content-bg").html(project_html);
$('#pagination .prev').unbind('click');
$('#pagination .prev').bind('click', function(e) {
e.preventDefault();
$('#pagination .prev').removeClass('prev');
$(".content-bg")
.addClass('temp_content')
.removeClass('current_content')
.before($('<div class="content-bg current_content"></div>').html($.parseElement(current_index-1)))
.animate({'left': '+=640px'}, 600);
$(".content-bg.current_content")
.css('top', '0px')
.css('left', (parseInt($(".content-bg.temp_content").css('left'))-640)+'px')
.animate({'left': '+=640px'}, 600, function(){$(".content-bg.temp_content").remove()});
});
$('#pagination .next').unbind('click');
$('#pagination .next').bind('click', function(e) {
e.preventDefault();
$('#pagination .next').removeClass('next');
$(".content-bg")
.addClass('temp_content')
.removeClass('current_content')
.after($('<div class="content-bg current_content"></div>').html($.parseElement(current_index+1)))
.animate({'left': '-=640px'}, 600);
$(".content-bg.current_content")
.css('top', '0px')
.css('left', (parseInt($(".content-bg.temp_content").css('left'))+640)+'px')
.animate({'left': '-=640px'}, 600, function(){$(".content-bg.temp_content").remove()});
});
$(".width-wrap").animate({'top': '-=275px'}, 600);
$(".content-bg").css('left', (640*position)+'px').animate({'top': '0px'}, 600);
}
}
最佳答案
当您绑定(bind)事件处理程序时,它会在您调用 .bind
时绑定(bind)到元素集。不使用选择器,因此当您更改其中一个元素使其不再与选择器匹配时,这不会反射(reflect)在自动添加/删除的处理程序中。
您可能需要.live
相反,它使用选择器,并在事件触发时自动将事件处理程序绑定(bind)到选择器匹配的元素。
关于javascript - 即使选择器被删除,Jquery 点击功能仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944096/