0

https://github.com/browserstate/ajaxify内の次の関数で問題が発生しています

次の形式の URL の場合:

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...
});
4

2 に答える 2

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; 
于 2012-04-13T16:18:21.023 に答える
0

このようなものはうまくいくはずです

$('a[href^=http]')

外部のhrefを持つリンクのみを返します

またはこのようなことをします

$('a').filter('[href^=http]')

また

$(this).is('[href^=http]')   //will return true if external hrefs

あなたの場合

于 2012-04-13T16:17:24.627 に答える