我在https://github.com/browserstate/ajaxify
中遇到了以下功能的问题对于以下格式的网址:
http://rooturl.com/?alfa=a
或任何其他查询字符串未被识别为内部链接。 (rooturl.com是我的内部主页)
// Internal Helper
$.expr[':'].internal = function(obj, index, meta, stack){
// Prepare
var
$this = $(obj),
url = $this.attr('href')||'',
isInternalLink;
// Check link
isInternalLink = url.substring(0,rootUrl.length) === rootUrl || url.indexOf(':') === -1;
// Ignore or Keep
return isInternalLink;
};
如何修改此函数以使其将查询字符串的内部URL计为“内部链接”??
以供参考,该函数用于以下上下文:
$this.find('a:internal:not(.no-ajaxy, .no-ajaxy a)').click(function(event){
// so on...
});
答案 0 :(得分:1)
我认为您需要做的就是检查?在URL中,因为它是查询字符串
所必需的isInternalLink = url.substring(0,rootUrl.length) === rootUrl || url.indexOf('?') !== -1 || url.indexOf(':') === -1;
但是另一个URL可能有查询字符串并且是外部的,因此您可能需要使用split()并检查第一位是否与rootUrl匹配
var bits = url.split('?');
if (bits[0] === rootUrl) isInternalLink = true;
答案 1 :(得分:0)
这样的事情应该起作用
$('a[href^=http]')
只返回带有外部hrefs的链接
或做类似的事情
$('a').filter('[href^=http]')
或
$(this).is('[href^=http]') //will return true if external hrefs
在你的情况下