JQuery:更改元素的默认绑定

时间:2011-06-17 14:04:51

标签: jquery binding

如何更改元素的点击装订? Html片段是:

<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>

元素被复制到第一个列表但单击绑定仍然存在,我希望单击该项目切换到另一个绑定:

  • + link将副本(其中+更改为 - )添加到第一个列表
  • - 添加副本的链接会从第1个列表中删除该项目

由于

4 个答案:

答案 0 :(得分:0)

使用unbind方法取消绑定附加到它的任何事件。

e.g

$clone.unbind('click');

答案 1 :(得分: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;     } );

答案 2 :(得分: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;
    }
);

答案 3 :(得分:0)

据我所知,unbind仅在您之前bind点击时才有效。

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