即使选择器被移除,Jquery的点击功能也会继续工作
Jquery click-function keeps working, even though selector is removed
我尝试通过删除用于触发javascript行为的选择器来暂时禁用一个函数。即使选择器(.next)被删除,该函数也会继续工作。
beta.art89。这是网页。点击一个项目,然后在右下角指向右的箭头来激活。
代码:
$.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
时被绑定到元素集。没有使用选择器,因此当您更改其中一个元素使其不再与选择器匹配时,这是而不是反映在自动添加/删除的处理程序中。
您可能需要.live
,它使用选择器,并在事件触发时自动将事件处理程序绑定到选择器匹配的元素。
注释绑定$('#pagination .next')
和$('#pagination .prev')
按您的意愿工作。如果我没有误解你的要求的话。
当您返回到您的项目时,您是否已经使用了导航项的克隆版本?我猜你不需要再次重新绑定你的元素,因为它已经绑定了,你正在替换你的克隆元素。
$.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);
}
}
它不会帮助你删除。next - jQuery使用选择器来查找元素。然后向其添加事件处理程序。现在元素上有了这个处理程序——在那之后对元素做什么都没有区别,已经太迟了。
我有一种感觉,你想要.once()
函数-这绑定处理程序只运行一次元素,而不是更多。
相关文章:
- JavaScript打印功能使日历停止工作
- jQuery滚动功能只工作一次
- 为什么ng控制器不调用或工作或功能不工作
- 点击功能没有'ajax调用动态元素(Backbone)后无法工作
- 为什么获胜'我的自定义功能工作
- 当我用鼠标左键点击时,让这个功能工作起来
- 只有当屏幕大小为一定宽度时,才希望该功能工作
- 可以't使切换功能工作
- 滚动功能工作方向错误
- JavaScript 谷歌地图一次只有一个功能工作,其余的不工作
- .切换功能工作不正常
- jquery's显示/隐藏功能工作
- 无法获取d3.js数据.选择线路时连接和键功能工作
- Rails AJAX删除功能工作,但在刷新之前不会自行删除
- Onclick功能工作在页面重新加载
- 灯箱不工作,只有缩放功能工作
- 在点击禁用功能,否则功能工作
- Ajax评论教程?Ajax功能工作,但追加4次.为什么
- 当附加项目时,我如何使我的旋转木马上的单击功能工作
- 插件自由墙,无法让墙功能工作