0

特定hrefの .私が必要なことをしてください。

<ul class="digital-downloads">
    <li> <a href="order_5129865a7d832&amp;download_file=936">Link</a></li>
    <li> <a href="order_5129870f01410&amp;download_file=936">Link</a></li>
    <li> <a href="order_512a033229f68&amp;download_file=935">Link</a></li>
    <li> <a href="order_512a048548f68&amp;download_file=935">Link</a></li>
    <li> <a href="order_512a0c31734a6&amp;download_file=932">Link</a></li>
</ul>

上記のコードからわかるように、最初の 2 つのリンクは同一ではありませんが、末尾は同じです。またはまたはなどを含むリンクの最初のインスタンスのみを選択する方法が必要です。download_file=936download_file=935download_file=932

li の数は同じリンクの数と同様に常に異なるため、たとえば 3 番目の li を選択することはできません。これは、リンクhrefが常に 3 番目の 935 になるとは限らずli、状況に応じて 936 または 932 になる可能性があるためです。

4

4 に答える 4

2

jQuery の選択に対してフィルターを適用し、前の href と比較しながらそれらをループできます。

var last;
var firsts = $(".digital-downloads li a").filter(function(){
    var link = this.href.match(/download_file=\d+$/)[0];
    if (link == last)
        return false; // we had this before, don't select
    else {
       last = link;
       return true; // we've found a new one!
    }
});

要するに、不一致の正規表現の世話をする:

…
    var m = this.href.match(/download_file=\d+$/);
    return m && m[0] != last && (last=m[0],true);
…
于 2013-02-24T14:06:43.620 に答える
0
$('a[href*="download_file=935"]:first')

CSS だけでそれを行うと、非常に複雑になります。

于 2013-02-24T14:08:01.780 に答える
0

正規表現を使用:

$(function() {
 var count = 0;
 $('a').each(function() {
  var match = $(this).attr('href').match(/(.*download_file=\d+)/);
    if (match !== null && count == 0) {
        alert(match.pop());
        count++;
    }
 });
});

http://jsfiddle.net/vzJVa/

于 2013-02-24T14:08:11.073 に答える
0

JavaScript の使用:

var first = document.querySelector('a[href$="936"]');

first.className = 'first';

JS フィドルのデモ

このアプローチでは、CSS スタイリングを可能にするために CSS クラス名が追加されるため、ブラウザーが をサポートしている限り、各アプローチの利点を組み合わせる必要がありますdocument.querySelector()

于 2013-02-24T14:04:09.823 に答える