#jquery #jquery-selectors #selector #parent-child #parent
#jquery #jquery-селекторы #селектор #родитель-потомок #родитель
Вопрос:
Это может быть повторяющийся вопрос, однако я сделал поиск и получил так много разных ответов, что я не знаю, какой использовать или как это сделать.
<?
if(isset($content))
{
$i = 1;
foreach($content as $item)
{
echo "<li><a href='#' name='" . $item['id'] . "'>" . $item['title'] . "</a></li>";
$i ;
}
}
?>
Я добавил функцию к этим ссылкам с помощью jQuery для обработки вызова ajax. Я выбираю ссылки следующим образом:
$("#tips_list ul li a").click(function(e) { //... }
Однако это не имеет большого смысла, потому что теперь вам нужно щелкнуть по фактическому тексту вместо элемента списка. Итак, я решил переструктурировать свой HTML, чтобы тег привязки обтекал li
тег.
`<a href="#" name=""><li>foo</li></a>`
Затем я соответствующим образом изменил свой код jQuery:
$("#tips_list ul a li").click(function(e) { //... }
Однако, теперь, когда я нажимаю .., он захватывает тег элемента списка как $(this)
; что означает, что я не могу действительно захватить атрибут name из тега привязки. Итак! Что мне нужно сделать, так это захватить name
атрибут из родительского тега привязки. И я, честно говоря, понятия не имею, какой самый простой способ это сделать. У меня нет такого опыта работы с jQuery.
Большое спасибо за помощь мне!
Комментарии:
1. $(this).parent() не работает? Вам также следует подумать об обновлении вашего css, чтобы лучше обрабатывать ваши LI.
2. Не ставьте
a
вокругli
, это недопустимо.
Ответ №1:
Сохраните старую разметку. Более поздний вариант довольно капризный и использует следующий скрипт.
$("#tips_list ul li").click(function(e) {
var name = $(this).children("a").attr("name");
alert(name);
}
Ответ №2:
Как насчет того, чтобы вернуться к исходному методу и установить #tips_list ul li a {display:block}
в вашем CSS? Это должно заставить a расширяться и занимать весь li, делая весь li доступным для просмотра. После этого ваш исходный код должен работать нормально.
Комментарии:
1. Хорошо, очевидно, я слишком усложнял это для себя, и был гораздо более простой способ, не связанный с jQ. Огромное спасибо!
Ответ №3:
Чтобы получить родительский элемент, вам просто нужно использовать $(this).parent()
Поэтому я бы сделал это: $(this).parent('a').attr('name');