在<a> doesnt iterate on the element itself</a>上每个jquery

时间:2011-11-21 14:24:49

标签: jquery jquery-selectors

我有像这样的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");
    }
});

但这不起作用。我认为那个小jquery片段上的$(this)应该引用匹配的<a>元素吗?但似乎$(this)指的是元素的href值,而不是元素本身(我通过执行alert($(this));来测试它)

那么,我在这里做错了吗?我怎样才能真正遍历所有<a>元素并真正获得<a>元素本身而不是href值。

或者如果你有更好的建议让我做这种事情(根据其href值突出显示元素),我会很高兴听到你的建议:)

之前

4 个答案:

答案 0 :(得分:3)

I don't see a problem

请注意,如果您要使用jQuery,那么使用$毫无意义。


就更简洁的方法而言,您可以使用[attr~="value"] selector

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

这将找到以http://mypreferredURL.com

开头的所有链接

答案 1 :(得分:2)

  

@Eric:是的,我也在使用原型,所以我必须使用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和原型

答案 2 :(得分:0)

你正在做什么应该有效,但这只是一种较短的方式,假设你只想检查一个网址?:

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

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

答案 3 :(得分:-1)

你错了 - 一切都很好。

根据

http://jsbin.com/evaxaj/edit

它为你做了五个对象'a'

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

为您提供SRC。