动态点击事件未附加。 .bind()

时间:2013-08-23 13:04:45

标签: jquery

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。

5 个答案:

答案 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中的元素的事件:

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()首先适用,因为脚本会修改元素。

答案 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)

从我的问题可以解决的问题,这样的事情可能是什么?

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();
    }
});
相关问题