2013-08-23 170 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(); 
    } 
});