我可以在jQuery过滤器方法上使用多选择器表达式吗?

时间:2012-06-20 10:36:25

标签: javascript jquery

我想要选择一堆锚标签。但是如果这些链接的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");
     });

为了实现我的选择,我必须使用过滤方法两次。 e.g

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

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

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

JS Fiddle demo

参考文献: