0

私はこのコードに頭を悩ませています

$('a').filter(function() {
    // I want to eleminate www.goto.com, www.foto.com
    // and 10-15 additional links
    return this.href.match(??);
}).addClass('highlight');

ページには約 50 個のリンクがあり、そのうちの 10 ~ 15 個をフィルター処理したいと考えています。複数のifを書きたくありません。jQueryを使用しているときではありません。また、マークアップが手の届かないところにあるため、リンクにクラスまたは ID を追加することもできません。

ここにマークアップしてください - http://jsfiddle.net/wQYuz/

どうすればいいですか?

4

3 に答える 3

0

あなたは、指定された URL を持つすべてのリンクを削除し (つまり goto foto)、残りを強調表示したいと言いました。したがって、最初にすべての href を削除してから、残りを強調表示することができます

http://jsfiddle.net/fenderistic/WbYUe/

$('a').filter(function() {
// I want to eleminate www.goto.com, www.foto.com
// and 10 more links
  return this.href.match(/(goto|foto|anyotherstring)/g);
}).remove();

$('a').each(function(){
  $(this).addClass("highlite");
});

また

次のようにすると、指定されたリンクが削除され、他のリンクがすべて一度に強調表示されます

http://jsfiddle.net/fenderistic/aCZfa/

$('a').each(function() {
  // I want to eleminate www.goto.com, www.foto.com
  // and 10 more links
  if(this.href.match(/(xyz|goto|foto|mymy|abc)/g)){
   this.remove();   
} else { $(this).addClass("highlite"); }
  //return this.href.match(/(goto|foto|anyotherstring)/g);
});
于 2013-11-13T17:57:03.690 に答える
0

これを試して:

var elm = ["http://www.goto.com", "http://www.foto.com"]; //list of unwanted sites
$("a").each(function () {
    var href = $(this).attr("href");
    if (elm.indexOf(href) >= 0) { //compare
        $(this).addClass("highlite");
    }
});

ここでフィドル。

于 2013-11-13T17:47:54.403 に答える
-1

これは仕事をします:

$('a').filter(function() {
   // I want to eleminate www.goto.com, www.foto.com
   // and 10 more links
    return this.href.match(/oto|xyz|loop/g);
}).addClass('highlite');

otoパターンを各リンクと比較し、一致するリンクを get しhighlitedます。

更新されたフィドルは次のとおりです。 http://jsfiddle.net/wQYuz/5/

于 2013-11-13T17:43:23.320 に答える