2011-07-19 5 views
3

リンクが画像であるかどうかをチェックする必要があるjQueryコードを書いています。現在のコードは次のようになります。ここでのベストプラクティスですjQueryで配列を属性比較に使用できますか?

$('a[href$=.jpg],a[href$=.jpeg],a[href$=.png]').click(function() { 
    // do something even smarter 
}); 

何:

$('a[href$=".png"]').click(function() { 
    // do something smart 
}); 

が、それはこのようなもの、複数のフォーマットをチェックするために、コード内の属性の配列を持つことは可能ですか?ありがとう!

答えて

2

はい、これを行うことができます。

これは完全に合法です。


何もできることはHREFが何であるか、クリックを確認です:

$('a').click(function(){ 
    var href = this.href; 
    var hrefParts = href.split('.'); //array(0: fileName, ...length - 1: extension) 
    if(hrefParts[hrefParts.length - 1] == 'png'){...} 
    //etcetera... 
}); 
+0

おかげでニールは、あなたは入れません。 – Klikerko

+0

何problemoを^ _ ^画像は '.JPEGた場合、これは失敗し – Neal

0

はい、それがどのようにあなた

0
$('a').each(function() { 
    var ext = $(this).attr('href').substr('-4'); 
    if (ext == '.png' || ext == '.jpg') { 
     ... continue ... 
    } 
}); 
+0

を助けて幸せ'。 –

+0

@Billこれがコードスニペットであり、完全な例ではありません。それは彼のためにコードを噛んではいけません。どの子供もこの設定を使用して、.jpegに合うように修正することができます。 – Jules

+0

。それはsubstr()を使っていくつかの厄介なコードにつながる可能性があります。 –

0

あなたはjQueryの少しを使用する場合はgroup selectors詳細...

$('a').click(function(e) { 
    var ext = $(this).attr('href').split('.').slice(-1); 
    switch(ext) { 
    case 'png': 
     // Code for PNGs! 
    break; 
    case 'jpg': 
    case 'jpeg': 
     // Code for JPGs! 
    break; 
    default: 
     // Otherwise.... 
    } 
}); 
+0

これはどこに戻りますか? – Neal

+0

私はちょうどそれを変更しました。どこにでも返品を置くという悪い習慣。 –

0

拡張機能を正しい関数にリンクするオブジェクトニールの例のオフの作業

..速い応答や余分な努力のための

var extToFun = { 
    png:function(){}, 
    gif:function(){} 
}; 

$('a').click(function(){ 
    var href = this.href.split('.'); 
    var ext = href[hrefParts.length - 1]; 
    if(extToFun[ext])extToFun[ext].call(this); 
}); 
関連する問題