Из fine manual:
Если строка передается в качестве параметра $()
, JQuery рассматривает строку, чтобы увидеть, если она выглядит как HTML (то есть, он имеет <tag ... >
где-то в пределах строки). Если нет, строка интерпретируется как выражение селектора, как описано выше. Но если строка представляет собой фрагмент HTML, jQuery пытается создать новые элементы DOM, как описано в HTML. Затем создается и возвращается объект jQuery, который относится к этим элементам.
Похоже, что jQuery пытается понять, что находится в этой строке, и не совсем верно. Если вы try this (по крайней мере, в браузере WebKit):
console.log($("<input type='text' id='txtWeightRow'>%"));
console.log($("<input type='text' id='txtWeightRow'>%<br>"));
Вы увидите, что только <input>
выходит в первый, но вы получите все три за секунду. Я бы назвал это ошибкой в jQuery.
Я думаю, что вы должны сделать это в два этапа, чтобы сделать его работу:
var $weightText = $("<input type='text' id='txtWeightRow'/>").attr('name', $this.attr('name'))
//...
$(whatever).append($weightText).append('%');
где whatever
делает, конечно, зависит от того, где вы пытаетесь поставить <input>
.
Это не то, как вы добавляете элемент в jQuery. Что делает ваш код, это поиск текстового поля (с неправильным селектором) и добавление к нему атрибута имени. – jb11
Я хочу выбрать детали из другого текстового поля в это текстовое поле – BruceyBandit
@ jb11: '$ (some_pile_of_html)' отлично, вы хотите «.append» его (или подобное), чтобы получить его в DOM, но это отдельный пункт. –