0

这样做可能有更好的方法,但我试图删除然后将点击事件附加到以下元素。

 $("#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 库,否则我会将绑定和取消绑定更改为打开和关闭。

4

5 回答 5

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');
     }
});
于 2013-08-23T13:23:39.537 回答
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();
    }
});
于 2013-08-23T13:56:15.650 回答
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() 首先适用,因为脚本会修改元素。

于 2013-08-23T13:20:00.177 回答
0

如果元素/函数存在,一切或什么都不应该工作,但不仅仅是它的一部分......我需要你的 html 中的更多内容来给你任何进一步的提示!

顺便提一下:bind() 已从 jQuery 中弃用/删除;使用 .on() 代替。 http://api.jquery.com/on/

于 2013-08-23T13:11:38.470 回答
0

来自 jQuery 网站:

从 jQuery 1.7 开始,.on() 方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind() 方法用于将事件处理程序直接附加到元素。处理程序附加到 jQuery 对象中当前选定的元素,因此这些元素必须存在于调用 .bind() 的位置。有关更灵活的事件绑定,请参阅 .on() 或 .delegate() 中有关事件委托的讨论。
进一步阅读:http: //api.jquery.com/bind/

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

$("#clickDiv2").click(function(){
    // Your event handler code here
});
于 2013-08-23T13:13:47.903 回答