使用jQuery选择所有目标没有后缀的链接

时间:2018-09-12 12:27:27

标签: javascript jquery jquery-selectors

如何执行标题中描述的选择?我认为假设此类链接的目标末尾没有.asdafasdfsaf.html.zip之类的东西应该是相当安全的,所以我尝试了以下方法:

var links = jQuery("a:not([href$='.*'])") // Period as is
var links = jQuery("a:not([href$='\.*'])") // One escape
var links = jQuery("a:not([href$='\\.*'])") // Two escapes

但是,在阻止选择不需要的链接方面,这些方法似乎都没有任何作用。如何解决这个问题?

编辑:

对RegExes的这种尝试无效:

function has_suffix (target_string) {
   regex = RegExp("(\/.*\..*)$");
   if ( regex.test(target_string) ) {
     return true;
   } else {
     return false;
   }

var links = jQuery("a").filter(
  function () {
    target = $(this).attr("href")
    console.log(target)
    return $(true,this) === has_suffix(target);
  });

在控制台中测试RegExp似乎确实产生了我想要的结果,但是实际上在过滤器中使用has_suffix函数让我头疼。 filter的文档对我没有用;在示例中还不够清楚。

1 个答案:

答案 0 :(得分:1)

您可以直接直接返回has_suffix()的结果,因为filter函数已经为每个匹配的元素运行一次:

var links = jQuery("a").filter(
  function () {
    target = $(this).attr("href")
    console.log(target)
    return has_suffix(target);
  });