JQuery выберите родителя - PullRequest
1 голос
/ 11 мая 2011

Это может быть повторяющийся вопрос, однако я выполнил поиск и получил так много разных ответов, что я не знаю, что использовать или как это сделать.

<?
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 из тега привязки parent . И я, честно говоря, понятия не имею, какой самый простой способ сделать это. Я не так опытен с jQuery.

Большое спасибо за помощь!

Ответы [ 3 ]

3 голосов
/ 11 мая 2011

Сохранить старую разметку. Последний довольно капризный и использует следующий скрипт.

$("#tips_list ul li").click(function(e)   {
    var name = $(this).children("a").attr("name");
    alert(name);
}
1 голос
/ 11 мая 2011

Как насчет возврата к исходному методу и установки #tips_list ul li a {display:block} в вашем CSS?Это должно сделать расширение и охватить весь ли, заставляя весь ли казаться кликабельным.Ваш оригинальный код должен работать нормально.

1 голос
/ 11 мая 2011

Чтобы получить родительский элемент, вам просто нужно использовать $(this).parent() Так что я бы сделал это: $(this).parent('a').attr('name');

...