9

私は次のjQueryセレクターを持っています:

$("a[href^='http://'],a[href^='https://']");

a[href^=これを変更して、 2回指定する必要がないようにすることはできますか?

たとえば、次のようになります。

$("a[href^='http://'||'https://']");

編集:私の例でhttpあり、https文字通りに解釈されるべきではありません。とで始まる値を探している可能性がyありzます。

4

4 に答える 4

2

2 番目の関数呼び出しを使用する場合は、非常に簡単です。

$('a').filter('[href^="http://"],[href^="https://"]');

またはトークンを使用する場合:

var startsWith = ['http://', 'https://'];
$('a').filter(function () {
    var i;
    for (i = 0; i < startsWith.length; i++) {
        if ($(this).is('[href^="' + startsWith[i] + '"]')) {
            return true;
        }
    }
    return false;
});

または、カスタム式を使用:

$.expr[':']​​​​​​.hrefStartsWith = function (ele, i, info) {
    var tokens;
    tokens = info[3].split(',');
    for (i = 0; i < tokens.length; i++) {
        if ($(ele).is('[href^="' + tokens[i] + '"]')) {
            return true;
        }
    }
    return false;
};

次のように使用されます。

$('a:hrefStartsWith(http://,https://)')
于 2012-08-09T16:23:37.330 に答える
0

デフォルトでは、jQueryでこれを行うことはできません..セレクターの「または」条件はありません(コンマ、並べ替え、回避したいものを除く)。

必要に応じて、カスタムフィルターを作成できます。

http://jsfiddle.net/yJZDg/

この種のことをたくさんする必要がない限り、これは非常にやり過ぎです。この例は、完全に一致する場合にのみ機能します。「startswith」または他の種類の一致を微調整する必要がありますが、アイデアはそこにあります。

于 2012-08-09T16:35:39.000 に答える
0

あなたは簡単に行うことができます

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

正確href^=に言う必要がない限り、「から始まる」という意味://も含まれます。

他の属性と値の例を次に示します。

http://jsbin.com/owehow/2/edit

于 2012-08-09T16:28:36.853 に答える
0

フィドル: http://jsfiddle.net/X8CYQ/


次のようなものを使用できるはずです。

$.expr[':'].exturl = function(obj) {
   return (/^https?:\/\//i).test($(obj).attr("href"));
}

次に、セレクターを次のように使用します。

$("a:exturl")

HTML :

<a href="http://www.google.com">External link #1</a><br />
<a href="ftp://www.donotinclude.dk">No match link #1</a><br />
<a href="?nope">No match link #2</a><br />
<a href="https://www.google.dk">External link #2</a><br />
<a href="http://www.google.se">External link #3</a><br />
<a href="ssh://whywouldyouevendothis">No match link #3</a><br />
<a href="https://www.google.co.uk">External link #4</a><br />
<a href="http://www.facebook.com">External link #5</a><br />
<a href="/index.html">No match link #4</a><br />
<a href="https://www.facebook.com">External link #6</a><br />​

JS :

$.expr[':'].exturl = function(obj) {
    return (/^https?:\/\//i).test($(obj).attr("href"));
}
$(document).ready(function() {
    $("a:exturl").css("color", "red");
});​
于 2012-08-09T16:28:19.060 に答える