6
После успешного вызова AJAX мне нужно обновить определенную строку таблицы (через tr id = "unique_key").Обновление строки таблицы с помощью данного идентификатора с помощью jQuery
HTML фрагмент:
<a name=\"p{$product_id}\" class=\"tr{$product_id}\"></a>
<tr id="p{product_id}" class="item-row">
<td><h3>{product_id}</h3><a rel="facebox" href="ajax_url">{product_name}</a></td>
<td>{image_information}</td>
<td>{image_sortiment}</td>
<td>{product_status}</td>
</tr>
Javascript:
// AJAX Call
success: function(msg){
$('#p' + prod_id).remove();
$('.tr' + prod_id).after(msg);
$('#p' + prod_id + ' a[rel*=facebox]').facebox();
}
...
Что происходит:
- Строка таблицы удаляют,
- Якоря сгруппированы в один ряд (не раньше, чем их
<tr>
), поэтому мой «крючок» исчезает - AJAX результат вставляется по всей таблице (после того, как мой «крючок», но все еще в неправильном месте)
Что случилось с моей идеей? Как заставить jQuery «перезаписать» требуемую строку таблицы?
Что возвращается из запроса AJAX, новый '
ответ
У вас не может быть якорей внутри стола, но вне строк таблицы. Весь контент в таблице должен находиться внутри ячеек таблицы. Если вы размещаете контент за пределами ячеек, браузеры пытаются исправить код, чтобы его можно было отображать, как правило, путем перемещения его по таблице.
Манипулирование содержимым в таблице может быть сложным, оно может действовать, если вы добавляете строки как фрагменты html, а не элементы строки. Используйте функцию jQuery для создания элементов из строки, которую вы получаете.
источник
2010-04-29 07:45:09 Guffa
Я надеялся, что неверный html не будет проблемой, но вы подтвердили: это так. Спасибо за это. К сожалению, я не могу пройти через все строки таблицы, потому что это слишком велико для этого, я думаю. – fabrik
@fabrik: Вам не нужно проходить через все строки. Каждый элемент строки имеет свойство 'rowIndex', которое вы можете использовать, чтобы узнать, где находится в таблице' rows' коллекция строка. – Guffa
Удивительный! Гениальный! Спасибо за это! Я смотрел каждую страницу на jQuery Wiki, похоже, что я был недостаточно внимателен. Еще раз спасибо! – fabrik
Ничего плохого в этой идее.
Попробуйте просто заменить содержимое каждого
TD
внутри этогоTR
вместо удаления и добавления нового.источник
2010-04-29 07:45:40
Просто это идея, проба это
Ваш тр должен быть одиночными или много, идентификатор concate тр продукта с постоянным и с приращением значения, как этот
Если вы собираетесь удалить означает просто передать tr-позицию с идентификатором продукта и получить правильное значение для удаления и отобразить tr в заказе.
источник
2010-04-29 07:46:40 Karthik
Этого недостаточно, потому что я мог обновлять строку таблицы в любое время, когда пользователь обновляет детали продукта. Я думаю, ваше решение работает для одного обновления. Btw благодарит за ваш комментарий. – fabrik
У вас не может быть никаких элементов без стола непосредственно внутри
<table>
, но не внутри<td>
или<th>
. Браузеры не будут отображаться правильно.Таким образом, вы должны поставить якорь в другой
<tr><td> .. </td></tr>
Но если они есть только удалить строку и создать новую, вы можете попробовать replaceWith() вместо:
источник
2010-04-29 07:50:32 Voyta
Извините, что я сначала увидел ответ Гуффа. Кстати, я отвечу на ваш ответ. Благодаря! – fabrik
магазин КОНЦЕРН id в переменной с именем updateID (сделать ее глобальной переменной), а затем в успехе ajax использовать селектор jQuery $ ('tr # 2 td'), чтобы вернуть массив элементов td внутри tr # 2. Таким образом, для отслеживания # td в индексе 1 присваивается переменная tracking112. Аналогично td при индексе 2 присваивается значение charge12.
Форма размещены значения, присвоенные TD elements.This таблицы т.р. обновит строку со значениями, которые были опубликованы в форме.
источник
2013-02-21 14:32:48
Смежные вопросы