苦苦于jQuery条件选择器

时间:2014-03-04 04:49:25

标签: javascript jquery jquery-selectors

我一直在努力解决这个问题几个小时。

我想选择所有以属性' http:// localhost'开头的锚链接。并排除包含' wp-admin'的所有链接在他们中间。

我可以选择所有以' http:// localhost'开头的链接有了这个:

$internalLinks = $("a[href^='http://localhost']")

这是我到目前为止排除' wp-admin'链接,但它不起作用:

$internalLinks = $("a:not[href*='wp-admin']a[href^='http://localhost']"),

我错过了什么?

4 个答案:

答案 0 :(得分:4)

你差不多了。你正在寻找的选择器是:

a[href^='http://localhost']:not([href*='wp-admin'])

你犯的两个错误是1)重复标记名称(a)和2)忘记:not()选择器的括号。

答案 1 :(得分:3)

  

我想选择以属性http:/localhost开头的所有锚链接,并排除其中包含'wp-admin'的所有链接。

鉴于您的情况相对复杂,我会考虑使用filter()代替:

$('a').filter(function() {
    // starts with 'http://localhost' and does not contain 'wp-admin'
    return this.href.indexOf('http://localhost') == 0 && 
       this.href.indexOf('wp-admin') == -1;
});

在单个表达式中执行所有操作并不意味着您无法评估页面上的所有锚点,因此您可以更轻松地对自己进行操作。

答案 2 :(得分:1)

试试这个

 $internalLinks = $("a[href^='http://localhost']").not("a[href*='wp-admin']");

示例

http://jsbin.com/burobako/1/edit

答案 3 :(得分:0)

使用类似的东西

$("a:not([href^=wp-admin])");

并看到此链接

jQuery selector question. Select all nodes that do NOT START with (string)