Theres可能是一种更好的方法,但我正在尝试删除然后将点击事件附加到以下元素。
$("#clickDiv2").bind('click',showAction2);
$("#clickDiv3").bind('click',showAction3);
$("#clickDiv4").bind('click',showAction4);
该功能正常,$(“#clickDiv”)。bind('click',showAction);工作,它在功能的最后,但我上面提到的三个没有。任何人都可以解释为什么会这样吗?
$("#clickDiv").click(function showAction(){
$("#obj1tbl").show();
$("#obj1tbl").animate({left: "100"});
$(".goActive").addClass('glow');
$("#clickDiv2").unbind('click');
$("#clickDiv3").unbind('click');
$("#clickDiv4").unbind('click');
$("#clickDiv").bind('click', function gogo(){
$("#obj1tbl").animate({left: "999"});
$("#obj1tbl").hide();
$(".goActive").removeClass('glow');
$("#clickDiv").unbind('click');
$(".dataTableClass").css("opacity", "1");
$("#clickDiv2").bind('click',showAction2); // DOES NOT WORK
$("#clickDiv3").bind('click',showAction3); // DOES NOT WORK
$("#clickDiv4").bind('click',showAction4); // DOES NOT WORK
$("#clickDiv").bind('click',showAction); //WORKS!!
});
});
干杯!
我限制使用旧的jQuery库,否则我会更改bind和unbind to on和off。
答案 0 :(得分:0)
如果元素/函数存在,或者什么都不应该起作用,但不仅仅是它的一部分...... 我需要更多来自你的HTML,以便给你任何进一步的提示!
提到:不推荐使用bind()从jQuery中删除/删除;请改用.on()。 http://api.jquery.com/on/
答案 1 :(得分:0)
来自jQuery网站:
从jQuery 1.7开始,.on()方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind()方法用于将事件处理程序直接附加到元素。处理程序附加到jQuery对象中当前选定的元素,因此这些元素必须存在于调用.bind()的位置。有关更灵活的事件绑定,请参阅.on()或.delegate()中有关事件委派的讨论。
进一步阅读:http://api.jquery.com/bind/
或者,你可以这样做:
$("#clickDiv2").click(function(){
// Your event handler code here
});
答案 2 :(得分:0)
您可以使用.on()
来处理不在DOM中的元素的事件:
<div id="container">
<div id="clickDiv2">Click me!</div>
</div>
$(function () {
$("#container").on('click','#clickDiv2', function () {
alert("good");
var myDiv = $("#clickDiv2");
myDiv.remove();
$("#container").append(myDiv);
});
});
这适用于进一步点击,而.click()首先适用,因为脚本会修改元素。
答案 3 :(得分:0)
您不需要删除元素的单击绑定,只需分配一次即可。在click div测试中使条件发光
$("#clickDiv2").bind('click',showAction2);
$("#clickDiv3").bind('click',showAction3);
$("#clickDiv4").bind('click',showAction4);
$("#clickDiv").bind('click', function (){
if($(".goActive").hasClass('glow')) {
$("#obj1tbl").animate({left: "999"});
$("#obj1tbl").hide();
$(".goActive").removeClass('glow');
$(".dataTableClass").css("opacity", "1");
}
else
{
$("#obj1tbl").show();
$("#obj1tbl").animate({left: "100"});
$(".goActive").addClass('glow');
}
});
答案 4 :(得分:0)
从我的问题可以解决的问题,这样的事情可能是什么?
var $box = $('.box');
$('.button').bind('click', function(e) {
if($box.is(':visible')) {
if($(this).hasClass('selected')) {
$('.button').removeClass('selected');
$box.hide();
}
} else {
$(this).addClass('selected');
$box.show();
}
});