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

Can I use a multiple selector expression on the jQuery filter method?

本文关键字:选择器 表达式 jQuery 过滤器 方法 我可以      更新时间:2023-09-26

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

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

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

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

如果你想稍微更详细一些,并且可能更容易理解,你可以使用:

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

JS小提琴演示。

引用:

  • filter() .