這是因爲你銷燬了你綁定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更好。非常感謝您的幫助! –