jQuery事件以不断增长的速度发生

时间:2011-10-16 15:30:41

标签: jquery html

我遇到了jQuery的问题,我最近开始玩这个问题。我会尝试尽可能地解释我的情况,并尝试添加所有相关信息。

我想要的: 两个列表,一个在自己的选项卡中。列表中的每个项目都有两个图像,这些图像也可用作按钮。按下按钮时,会发生事件。该事件将向其他列表添加元素。目前,作为概念证明,此事件是一个包含列表项ID的警报。

问题: 每次按下按钮时,警报都会以递增的速率发生。更准确地说,每按一次按钮,就会弹出比以前更多的警报。第一次,没有任何反应。下次显示一个警报。之后会显示两个连续警报等。

对我来说,为什么会发生这种情况并不明显。如果有人可以向我指出我可能做错了什么,我将不胜感激。

HTML:

<div class="demo">
<div id="tabs">
    <ul>
        <li><a href="#tabs-1">Tab 1</a></li>
        <li><a href="#tabs-2">Tab 2</a></li>
    </ul>

    <div id="tabs-1">
        <ul id="sortable11" class="todoList">
            <li id="6" class="todo">
                <div class="text">This is text (6)</div>
                <div class="actions">
                    <a href="#" class="edit">Edit</a>
                    <a href="#" class="delete">Delete</a>
                </div>
            </li>
        </ul>
    </div>

    <div id="tabs-2">
        <ul id="sortable22" class="todoList">
            <li class="ui-state-highlight">Item 1</li>
            <li class="ui-state-highlight">Item 2</li>
        </ul>
    </div>
</div>
</div>

CSS:

.todo .actions a.edit{
    background:url("../img/edit.png") no-repeat center center;
}

.todo .actions a.delete{
    background:url("../img/delete.png") no-repeat center center;
}

jQuery的:

$('.todo a.edit').live('click',function(){
    $('#sortable11 > li').click(function(){
        var current_id = $(this).attr("id");
        alert(current_id);
    });
});

1 个答案:

答案 0 :(得分:1)

你在其他点击处理程序中绑定了点击,这是完全错误的。

只需将其绑定一次即可正常工作:

$('#sortable11 > li').live('click', function(){
    var current_id = $(this).attr("id");
    alert(current_id);
});

在jQuery中,绑定事件处理程序不会覆盖现有处理程序,但添加新处理程序以允许更灵活的编程。

可以删除以前连接的处理程序,但我看不出有任何理由这样做。