Я работаю над внутренним плагином для jQuery dataTables, и я испытываю странное поведение.jQuery игнорирует последний элемент в возвращаемом наборе
Взгляните на следующую скрипке: http://jsfiddle.net/bJLLz/
ниже код ищет каждый «тр» первый элемента «TD», и добавляет еще один «» тд с входом флажка перед каждым матчем он находит. (Обратите внимание на последнюю строку в скрипке выше, не имеет флажок)
$(function() {
var checkBox = $('<input>', {
"type": "checkbox"
})
var td = $('<td/>', {
'class': "table-checkbox"
}).insertBefore("tbody > tr > td:first-child")
var checkBoxes = $(checkBox).appendTo(td)
var th = $('<th/>', {
'class': 'text-center'
}).insertBefore("thead > tr:nth(0) > th:nth(0)")
$(checkBox).appendTo(th)
.change(function() {
$(this).is(":checked") ? checkBoxes.prop('checked', true) : checkBoxes.prop('checked', false);
})
})
Хотя Jquery добавляет соответствующий элемент «TD», последний «тд» в таблице добавляется, но без ввода флажок.
Это действительно неожиданно. Есть ли у кого-нибудь идеи, почему?
Я думаю, что более удивительно, что это работает? Вы не создаете новый флажок для каждой строки, но один флажок, который вы вставляете в каждую строку, и insertBefore должен делать что-то внутренне, что создает новый флажок для каждой строки, а не только перемещение того, который вы создали и т. Д.? – adeneo
@adeneo Вот как работает '.insertBefore()'. Он предназначен для копирования одного элемента в несколько мест. – JJJ
@Juhana - ну да, но это кажется мне неинтересным, я бы скорее сделал итерацию себя и сделаю это -> [** FIDDLE **] (http://jsfiddle.net/bJLLz/4/) – adeneo