使用 jQuery 选择目标没有后缀的所有链接
Choose all links whose targets don't have suffixes using jQuery
如何进行标题中描述的选择?我认为假设此类链接在其目标末尾没有 .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
然而,其中 None 似乎确实可以防止 non-desired 链接被选中。如何解决这个问题?
编辑:
这次使用正则表达式的尝试没有成功:
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
的文档对我没有用;它的示例不够清楚。
您可以简单地 return 直接 has_suffix()
的结果,因为过滤器函数已经为每个匹配的元素运行一次:
var links = jQuery("a").filter(
function () {
target = $(this).attr("href")
console.log(target)
return has_suffix(target);
});
如何进行标题中描述的选择?我认为假设此类链接在其目标末尾没有 .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
然而,其中 None 似乎确实可以防止 non-desired 链接被选中。如何解决这个问题?
编辑:
这次使用正则表达式的尝试没有成功:
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
的文档对我没有用;它的示例不够清楚。
您可以简单地 return 直接 has_suffix()
的结果,因为过滤器函数已经为每个匹配的元素运行一次:
var links = jQuery("a").filter(
function () {
target = $(this).attr("href")
console.log(target)
return has_suffix(target);
});