#jquery
#jquery
Вопрос:
Я пытаюсь вставить новую строку в таблицу с помощью Jquery. Может ли кто-нибудь прокомментировать эти два метода:
-
Это работает правильно:
$('<tr>').append(row).appendTo(table);
-
Это не работает, но не ясно почему?
$(row).appendTo($('<tr>')).appendTo(table);
Ответ №1:
$(row).appendTo($('<tr>').appendTo(table));
Попробуйте это. Похоже, вы просто разместили круглые скобки в неправильном порядке.
Комментарии:
1. Я не уверен. Я довольно новичок в JS и Jquery.. Тем не менее, вам следует проверить сообщение Джона ниже.
Ответ №2:
$(row).appendTo($('<tr>'))
Это добавляет строку к вновь созданному <tr>
. Это возвращает ссылку jQuery на row
— НЕ на вновь созданный <tr>
.appendTo(table);
Добавляет row
в table
, таким образом удаляя его из вновь созданного <tr>
.
Попробуйте это вместо этого. Он получает ссылки прямо.
$('<tr>').append(row).appendTo(table);
Комментарии:
1. Ваш последний блок кода был № 1 в вопросе, но для меня это не очень элегантно.
2. Как я уже говорил выше: вы добавляете строку в динамический tr, а затем сразу же добавляете ее (строку) в таблицу. : )
3. @Casey так оно и есть 🙂 я не возвращался к вашему вопросу после написания этой части.
4. @John неверно. Я добавляю
row
к динамической строке, а затем добавляюtr
в таблицу.append
не изменяет цепочку. Он возвращаетtr
.5. @Casey несмотря на то, что он элегантный, у меня с этим нет проблем. я могу это нормально прочитать. я полагаю, это сводится к вопросу личного стиля.
Ответ №3:
Ваша область действия отключена. appendTo не изменит область действия цепочки. Вы добавляете строку в динамический tr, а затем сразу добавляете ее в таблицу.
Решение Snowblind будет работать, это будет работать: $ (table).append($(row).wrap('<tr></tr>'));
Вероятно, существует множество других производных. Просто убедитесь, что вы немного понимаете цепочку из этого. : )
Комментарии:
1. я не смог проработать пример переноса. Я попробовал: table.append($(‘<td>1</td>’).wrap(‘<tr></tr>’));
Ответ №4:
В вашем втором примере…
$(row).appendTo($('<tr>')).appendTo(table);
Набор, который вы вызываете appendTo()
во второй раз, не соответствует тому, что вы думаете. Это будет row
.
Этот jsFiddle должен сделать это понятнее.