2011-07-09 11 views

答えて

14
$('a[href*="youtube"]') 

、jQueryのAPIのSelectors部分を参照してください。

+0

同時に: – VMAtm

+0

あなたは引用する必要があります –

+2

@レイToal:完了。 (セレクタがなくても完全に動作するにもかかわらず、引用符は必須であるとjQueryが言っているのは奇妙ですが) – Reid

6

var allYoutubes = $('a').filter(function() { return /youtube/.test(this.href); }); 

ライブラリはの作業を行う必要はありませんので、あなた手の込んだセレクタを使用することができますが、これは単純明快、おそらく高速ですあなたのセレクターが何を意味するかを理解する。主に味の問題です。

+3

ただ好奇心から外れています:このアプローチは他の回答と比べて説明できますか? –

+0

@Caspar:jQueryの['filter'](http://api.jquery.com/filter/)は、セット内のすべての要素に対してテストを実行します。テストが真の場合、要素は保持されます。それが偽であれば、それはそれを投げ捨てる。これはページ上のすべての ''要素を選択し、テストに失敗した者を投げ捨てます(この場合、テストは「要素の 'href'属性に 'youtube'?」が含まれていますか?) – Reid

+0

@reid私はこのアプローチの違いが他のものと比較してどのようなものかを知りたいと思っています。例えば効率、パフォーマンス、互換性など –

2

これらの他の回答は素晴らしいです。しかし、あなたは(何jQueryの)それは純粋なJSを行うにはそれは難しいことではありません興味がない場合の代替

function getYouTubeLinks() { 

    var links = document.getElementsByTagName("a"); 
    var ytlinks = []; 
     for(var i=0,l=links.length;i<l;i++){ 
      if(links[i].href.replace("http://","").indexOf("youtube.com") === 0) { 
      ytlinks.push(links[i]); 
      } 
     } 
    return ytlinks; 
} 

var youtube = getYouTubeLinks(); 
for(var i=0,l=youtube.length;i<l;i++){ 
    youtube[i].style.color = "pink"; 
} 

では取り除くすることを確認すると良いでしょう「WWWを。」 「https://」と同様です。

+1

このようにループしてみましょう: '(i = 0、l = links.length; i <私は長さが常に評価される必要はありません;)。 –

+0

@キャスパー良い点。答えを自由に編集してください(もしあなたがそうしないなら、それはあなたのアイデアでした) - それは結局のことです。 –

関連する問題