2013-08-23 79 views
0

Theres可能是一个更好的方法,但我试图删除,然后将点击事件附加到以下元素。这个函数可以正常工作,$(“#clickDiv”)。bind('click',showAction); $(“#”)。工作,它在功能的结尾,但我上面提到的三个不。任何人都可以解释为什么这可能是?未附加动态点击事件。 .bind()

$("#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库,否则我会改变绑定和解除绑定和关闭。

+1

你能表现出一定的标记?另外,jQuery的[on](http://api.jquery.com/on/)优于bind。 –

+1

这似乎是一种......奇怪的做事方式。这里的目标是什么? –

+0

四个按钮,单击一个按钮时,屏幕上会出现一个div。当它再次点击时,div被移除。我想要在其中一个点击时禁用其他div的点击功能。然后再加回来......我希望这不是太混乱 – Daft

回答

0

如果元素/函数存在一切或没有东西应该工作,但不仅仅是它的一部分... 我需要更多从您的HTML给你任何进一步的提示!

只需提及:bind()已被弃用/从jQuery中移除;使用.on()代替。 http://api.jquery.com/on/

0

从jQuery网站:

在jQuery 1.7中,。对()方法是用于事件处理程序安装到一个文件的优选方法。对于早期版本,.bind()方法用于将事件处理程序直接附加到元素。处理程序被附加到jQuery对象中当前选定的元素上,所以这些元素必须存在于对.bind()的调用发生时。要获得更灵活的事件绑定,请参阅.on()或.delegate()中的事件委托讨论。
延伸阅读这里:http://api.jquery.com/bind/

或者,你可以简单地这样做:

$("#clickDiv2").click(function(){ 
    // Your event handler code here 
}); 
+1

从op的问题_“和Im限于使用较旧的jQuery库,否则我会更改绑定和解除绑定和关闭。”_ –

+1

@PatsyIssa其实他补充说,我发布了答案后,他并没有实际说他使用的是什么版本。如果你问我,“旧版本”很模糊。尽管感谢您的评论。 –

+0

哦,我的坏,我会回到潜伏在阴影中。 –

0

可以使用.on()处理其不在DOM元素的事件:

JsFiddle

<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()适用于第一次,因为脚本会修改元素。

0

您不需要移除元素的点击绑定,只需指定一次即可。在点击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'); 
    } 
}); 
0

从我可以从你的问题工作了,这样的事情可能?

http://jsfiddle.net/xe2X7/4/

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(); 
    } 
});