2011-06-17 62 views
1

如何更改元素的點擊綁定? HTML片段是:JQuery:更改元素的默認綁定

<div id="Selected"> 
<ul> 
    <li>element 01<a class="element01-selected">-</a></li> 
    <li>element 02<a class="element02-selected">-</a></li> 
    <li>element 03<a class="element03-selected">-</a></li> 
</ul> 
</div> 
<div id="UnSelected"> 
<ul> 
    <li>element 01<a class="element01-unselected">+</a></li> 
    <li>element 02<a class="element02-unselected">+</a></li> 
    <li>element 03<a class="element03-unselected">+</a></li> 
    <li>element 04<a class="element04-unselected">+</a></li> 
    <li>element 05<a class="element05-unselected">+</a></li> 
</ul> 
</div> 

此刻,我初始化這樣的綁定:

<script type="text/javascript" language="javascript"> 
$("#Selected ul li a").click(
    function() 
    { 
     // do stuffs 
     return false; 
    } 
); 
$("#UnSelected ul li a").click(
    function() 
    { 
    var li = $(this).parent(); 
    $clone = li.clone(false); 
    $clone.children().text("-"); 
    $("#Selected ul").append($clone); 
    return false; 
    } 
); 
</script> 

的元素將被複制到第一列表,但點擊綁定仍然存在,我想單擊的項目,以切換到其他綁定:

  • +鏈接添加一個副本(其中+改爲 - )到第一個列表
  • - 廣告鏈接DED副本從第一列表中刪除的項目

感謝

回答

0

使用代表附加事件。這種方式如果你添加任何新的元素,它會觸發相同的事件。

$("#Selected").delegate("ul li a", "click", function() 
    { 
     // do stuffs 
     return false; 
    } 
); 
$("#UnSelected").delegate("ul li a", "click", function() 
    { 
    var li = $(this).parent(); 
    $clone = li.clone(false); 
    $clone.children().text("-"); 
    $("#Selected ul").append($clone); 
    return false; 
    } 
); 
0

使用解除綁定的方法來解除綁定連接到它的任何事件。

$clone.unbind('click'); 
+0

我得到那部分,但不是一個應用新的綁定到複製的元素,我無法讓複製行爲,如果它被加載到第一個列表中。 – user706058

+0

嘗試使用委託以最佳方式解決您的問題。 – ShankarSangoli

0

,你可以在你的代碼中使用 unbind用於此目的

$("#elementId").unbind('click'); 

你可以使用這個,有點像這個 -

$("#UnSelected ul li a").click( 
function()  {  
$(this).unbind('click'); 
var li = $(this).parent();  
$clone = li.clone(false);  
$clone.children().text("-");  
$("#Selected ul").append($clone);  
return false;  }); 
0

據我所知,只有unbind如果你有以前bind編點擊工作。

$("#Selected ul li a").bind('click', 
    function(//do stuff) 
); 
$("#UnSelected ul li a").unbind('click', 
    function (//do stuff) 
);