我遇到了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);
});
});
答案 0 :(得分:1)
你在其他点击处理程序中绑定了点击,这是完全错误的。
只需将其绑定一次即可正常工作:
$('#sortable11 > li').live('click', function(){
var current_id = $(this).attr("id");
alert(current_id);
});
在jQuery中,绑定事件处理程序不会覆盖现有处理程序,但添加新处理程序以允许更灵活的编程。
你可以删除以前连接的处理程序,但我看不出有任何理由这样做。