jquery каждый на <a>не выполняет итерации самого элемента - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть такая структура HTML

<ul id="nav">
    <li><a href="http://localhost/.../">Homepage</a></li>
    <li><a href="http://localhost/.../">Our Profile</a></li>
    ...
    ...
    ...
</ul>

Что я хочу сделать с этой HTML-структурой, так это выделить элемент <a> в соответствии с его значением href. Поэтому я пишу небольшой скрипт jquery, как этот

jQuery("ul#nav li a").each(function(index, element){
    if($(this).attr("href") == "http://mypreferredURL.com"){
        $(this).addClass("example");
    }
});

Но это просто не работает. Я подумал, что $(this) в этом небольшом фрагменте jquery должно ссылаться на соответствующий элемент <a>, верно? но похоже, что $(this) относится к значению href элемента, а не к самому элементу (я проверял это, выполняя alert($(this));)

Так, я что-то здесь не так делаю? как я могу по-настоящему перебрать все эти элементы <a> и действительно получить сам элемент <a> вместо его значения href.

Или, если у вас есть лучшее предложение для меня, чтобы сделать такие вещи (выделение элемента в соответствии с его значением href), я буду очень рад услышать ваше предложение:

спасибо до

Ответы [ 4 ]

3 голосов
/ 21 ноября 2011

Я не вижу проблемы .

Обратите внимание, что нет смысла использовать jQuery, если вы все равно собираетесь использовать $.


С точки зрения более кратких способов сделать это, вы можете использовать [attr~="value"] селектор :

$('ul#nav li a[href^="http://mypreferredURL.com"]').addClass("example");

Здесь будут найдены все ссылки, начинающиеся с http://mypreferredURL.com

2 голосов
/ 21 ноября 2011

@ Эрик: да, я тоже использую прототип, поэтому я должен использовать этот jQuery вместо $ ,,, что-то не так с ним?

Да. Вы используете прототип $, где вы имеете в виду jQuery $. Чтобы исправить это, вы должны использовать:

jQuery("ul#nav li a").each(function(index, element){
    if(jQuery(this).attr("href") == "http://mypreferredURL.com"){
        jQuery(this).addClass("example");
    }
});

или

(function($) {
    $("ul#nav li a").each(function(index, element){
        if($(this).attr("href") == "http://mypreferredURL.com"){
            $(this).addClass("example");
        }
    });
})(jQuery);

Ваш лучший выбор будет не использовать jQuery и прототип !

0 голосов
/ 21 ноября 2011

вы не правы - все хорошо.

согласно

http://jsbin.com/evaxaj/edit

это пять вам объект 'а'

и http://jsbin.com/evaxaj/2/edit

дает вам SRC.

0 голосов
/ 21 ноября 2011

То, что вы делаете, должно работать, но это более короткий путь, если вы хотите проверить только один URL?:

$('#nav li a[href="http://mypreferredURL.com"]').addClass("example");

http://jsfiddle.net/infernalbadger/ELd4F/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...