У меня есть веб-страница, в которой перечислены некоторые компании из базы данных MYSQL, в листинге просто указано название компании. Когда пользователь нажимает на название компании, слайдер слайдов jquery показывает остальную часть информации об этой компании.
При щелчке названия компании он также отправляет запрос на php-скрипт для регистрации того, что человек просмотрел данные этой компании.
Моя проблема
Я хочу отправить ID для каждой записи в php-скрипт.
Я достиг этого, включив в jQuery код аккордеона в цикле while, который считывает вывод запроса mysql, но он генерирует много ненужного исходного кода (т. Е. Для каждой из перечисленных компаний).
Мне нужно включить код аккордеона jquery вне инструкции while.
Как передать идентификатор каждой записи базы данных (например, название компании) в $ .post в коде jquery, когда она находится за пределами цикла while?
Аккордеонный код JQuery
$(document).ready(function() { $('div.listing> div').hide(); $('div.listing> h4').click(function() { $.post("/record.php", { id: "<?php echo $LM_row02[id]; ?>" } ) var $nextDiv = $(this).next(); var $visibleSiblings = $nextDiv.siblings('div:visible'); if ($visibleSiblings.length ) { $visibleSiblings.slideUp('fast', function() { $nextDiv.slideToggle('fast'); }); } else { $nextDiv.slideToggle('fast'); } }); });
Любая идея приветствуется.
Когда вы создаете HTML (я предполагаю, что вы это делаете и в цикле), добавьте атрибут data-*
с идентификатором в качестве значения для элемента и прочитайте это значение с помощью jQuery, когда элемент будет нажат.
Например, ваш итоговый HTML будет выглядеть так:
<h4 data-id="123">Some title</h4>
и ваш JavaScript:
$('div.listing > h4').click(function() { $.post("/record.php", { id: $(this).attr('data-id') }, function() { // ... }); });
Когда вы создаете элемент h4 в html, добавьте атрибут данных html5, например
<h4 data-companyid="<?php echo $LM_row02[id]; ?>">Company Name</h4>
Затем используйте этот companyid в своем вызове ajax, например
$.post("/record.php", { id: $(this).data('companyid') } );