这是因为你销毁了你绑定click事件的元素。您可以轻松地通过使用deligating的.on事件解决它:
更改第一行:
$(document).on("click", 'button.change-rank', function() {
工作演示:http://jsfiddle.net/SEQbd/2/
但是,这是不是最好的方法。我会确保移动元素,而不是一直摧毁/创建元素。而不是使用.html()
和.html(someStrng)
的,你可以使用.append([jQuery Element/DOM Node])
见演示此:http://jsfiddle.net/SEQbd/4/
你可以写你的代码像这样简单:http://jsfiddle.net/3Wkfm/
$('button.change-rank').click(function() {
var direction = $(this).attr('data-direction'),
$original = $(this).closest("tr"),
$target = direction === "up" ? $original.prev() : $original.next();
if ($target.length && direction === "up") {
$original.insertBefore($target);
}
else if($target.length) {
$original.insertAfter($target);
}
});
var a = condition ? c : d
是一样的写作:
if (condition) {
var a = c;
}
else {
var a = d;
}
感谢您的工作演示!我不太清楚在这种情况下如何使用'.append',因为我不会简单地替换每个'.html()'。我不想在不删除旧内容的情况下将TR内容附加到新的TR中。鸡和鸡蛋的情况。我是否简单地追加到持有'DIV',然后准备好追加到新的'TR'?是否需要更多处理元素的销毁/创建,这就是为什么'.append'更好?有其他原因吗? –
@MarkRummel我已经评论过你的观点,然后放在我自己的右边:看到它在这里工作:http://jsfiddle.net/SEQbd/4/。还记得接受答案,如果它提供了正确的信息 – andlrc
比你!我将在早上审查所有这些,我确信在我完成所有工作后都会接受。我仍然好奇为什么append更好。非常感谢您的帮助! –