jQuery.closest () дает нулевое значение - PullRequest
0 голосов
/ 02 апреля 2012

Я делаю с этим плагином :

<table>
<tr>
     <td>
     <a class="linkType1" href="google.com">
         Google
     </a>
     <span style="display: none;">Goooooooooooogle</span>
    </td>
</tr>

<tr>
    <td>
    <a class="linkType1" href="yahoo.com">
        Yahoo
    </a>
    <span style="display: none;">Yaaaaaaaaaaaaaaho</span>
    </td>
</tr>
</table>

Как выбрать closest span из linkType1 -ханоров для отображения в виде всплывающей подсказки?

В настоящее время я делаю:

jQuery(document).ready( function() {
    jQuery("a.linkType1").tooltip({ 
        bodyHandler: function() { 
            alert(jQuery(this).closest("span").html()); // this alert is showing `null`
            return "hi"; // i need to setup the alerted content here
        }, 
        showURL: false 
    });
});

Ответы [ 3 ]

4 голосов
/ 02 апреля 2012

Ваши span элементы не являются предками ссылок, поэтому closest (который ищет совпадения для селектора текущего элемента или его предков) не то, что вы ищете.

Исходя из вашей разметки, вы можете захотеть next("span") (который найдет следующего родного брата, но только если это промежуток; он не продолжается с последующими родными братьями) или, возможно, nextAll("span").first() (который найдет первого следующего брата, который является промежутком, на случай, если вы когда-нибудь поместите что-то между a и span), который найдет всех последующих братьев и сестер с nextAll и затем захватит первый изих (ближайшая к ссылке) через first.Так

// If the `span` will always be the very next sibling
alert(jQuery(this).next("span").html());

или

// If you may put something between the `a` and the `span` at some point
alert(jQuery(this).nextAll("span").first().html());
2 голосов
/ 02 апреля 2012

closest() находит ближайший родительский элемент. Вы ищете родного брата:

jQuery(this).next("span").html()
0 голосов
/ 02 апреля 2012

$(this) относится к функции bodyHandler. Попробуйте это

alert(jQuery(linkType1).closest("span").html());

Почему бы не использовать find() вместо этого? Как closest () проходит через DOM дерево

...