0

我有一堆要选择的锚标签。但是,如果这些链接的 href 属性等于“#”或“”(一个空字符串),那么我想将它们从选择中排除。

目前,如果 href不等于 "#",我有以下内容会过滤掉选择:

在这里演示:http: //jsfiddle.net/dzrRS/2/

jQuery("a[href]").filter("[href!='#']").each(function() {
    jQuery(this).addClass("selected");
 });

然后,我尝试将其更改为以下内容,以便在 href 也不等于“”时也过滤掉选择。但是,这不起作用。

jQuery("a[href]").filter("[href!='#'], [href!='']").each(function() {
        jQuery(this).addClass("selected");
     });

为了实现我的选择,我不得不使用过滤器方法两次。例如

jQuery("a[href]").filter("[href!='#']").filter("[href!='']").each(function() {
    jQuery(this).addClass("selected");
 });

我真的需要这样做还是可以在一个过滤器方法中使用多个选择器?

4

2 回答 2

5
jQuery("a[href]").filter("[href!='#'][href!='']").each(function() {
    jQuery(this).addClass("selected");
});

有关详细信息,请参阅http://api.jquery.com/multiple-attribute-selector/

于 2012-06-20T10:38:38.820 回答
0

如果您想稍微冗长一些,并且可能更容易理解,您可以使用:

jQuery('a[href]').filter(
    function(){
        var href = jQuery(this).attr('href');
        return (href.indexOf('#') > -1 && href.length);
    }).addClass('selected');

JS 小提琴演示

参考:

于 2012-06-20T10:47:17.300 回答