是否可以在jQuery中使用数组进行属性比较?

时间:2011-07-19 16:38:08

标签: javascript jquery

我正在编写jQuery代码,我需要检查链接是否是图像。目前代码如下所示:

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

是否可以在代码中包含一系列属性,以检查多种格式,如下所示:

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

这里的最佳做法是什么?谢谢!

5 个答案:

答案 0 :(得分: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...
});

答案 1 :(得分:0)

是的,这就是你group selectors

的方式

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果你想再使用jQuery ......

$('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....
  }
});

答案 4 :(得分: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);
});