Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择其目标不为';使用jQuery不能有后缀_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

Javascript 选择其目标不为';使用jQuery不能有后缀

Javascript 选择其目标不为';使用jQuery不能有后缀,javascript,jquery,jquery-selectors,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 es

如何执行标题中描述的选择?我认为假设这样的链接在其目标末尾没有类似于
.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
然而,在阻止非期望链接被选择方面,这些似乎都没有真正起到任何作用。怎么能解决这个问题呢

编辑: 使用正则表达式的此尝试无效:

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
函数让我头疼。
过滤器
的文档对我没有用处;示例中不够清楚。

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

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

您需要为此编写一个
filter()
,因为选择器中不能有通配符,但是要小心匹配域末链接,例如
http://foo.com