-1
У меня есть таблица html, и это содержимое создано с помощью ajax И у меня есть кнопка, которая добавляет строку в начале таблицы Но JQuery не знает о содержимом ajax и добавляет строку только после того, какJQuery ignore html, созданный с помощью ajax
$("#add-row-first").on("click", addrowfirst);
function addrowfirst(){
$("#table").prepend("<tr><td>1</td><td>cell</td><td>cell</td><td>cell</td></tr>");
}
Аякса
function genTable(){
$.ajax({
type: "POST",
dataType: "html",
url: "inc/gen-table.php",
success: function(data){
$("#table").html(data);
}
});
}
HTML
<button id="add-row-first">create row</button>
<table id="table"></table>
РЕШЕНИЕ Таким образом, решение было очень простым. My ajax reqest return string "<tr><td>some text</td></tr>"
. Так что нет тега <tbody>
и код вставки вставки в тег тега, который не существует. И он автоматически создает его после создания ajax-кода. Таким образом, ваш Ajax должен вернуть <tbody><tr><td>some text</td></td></tdbody>
'$ (" # add-row-first "). On (" click ", addrowfirst);' – melancia
Вы уверены, что данные ajax фактически добавляются в тег '
очень сложно сказать вам решение, не зная, что делает ваш вызов ajax. –
ответ
простейшего решения этого дела может быть
источник
2014-10-04 17:57:35
Вы попробовали свое предложение? Предполагая, что '# table' ссылается на тег' table', тогда '.html()' возвращает что-то вроде '
...' в конкатенации с 'data' приведет к'если элемент
#add-row-first
создан после того, как документ создан, вы не можете использовать его таким образом. Вы можете использовать.on()
с другим параметром, так что будет найти элемент, как это вместоЕсли я понять Ваш вопрос правильно, это должно сделать это. documentation немного сложно переварить, но в основном первый элемент
#table
должен существовать во время загрузки документа, а элемент#add-row-first
может быть добавлен в DOM позже, если он является дочерним элементом#table
jQuery знает, как его найти.источник
2014-10-04 17:59:46 Bryan
Это была моя первая мысль, но формулировка вопроса подразумевает, что она фактически добавляет строку, просто не в правильном положении. Постскриптум Эта вещь, которую вы пытаетесь описать, - это делегированный обработчик событий * :) –
Я не уверен, я думаю, что весь элемент '# table' может быть загружен после создания DOM. Также использование этой терминологии не облегчает понимание. Спасибо за правильное техническое имя. :) – Bryan
Пока кнопка 'add-row-first'exists, тогда она должна работать. Есть руда, идущая одна, чем они показывают :) –
Смежные вопросы