jQuery优化链接“href”选择

时间:2011-10-03 07:30:07

标签: jquery

我正在根据“href”文件类型更改“a”标记的类。它工作正常。这是代码:

    $('#divComment a[href$=".pdf"]').removeClass().addClass("pdf");
    $('#divComment a[href$=".doc"]').removeClass().addClass("word");
    $('#divComment a[href$=".docx"]').removeClass().addClass("word");
    $('#divComment a[href$=".zip"]').removeClass().addClass("zip");
    $('#divComment a[href$=".jpg"]').removeClass().addClass("image");
    $('#divComment a[href$=".xls"]').removeClass().addClass("excel");
    $('#divComment a[href$=".xlsx"]').removeClass().addClass("excel");

如何优化此代码?

3 个答案:

答案 0 :(得分:6)

如果通过优化,您的意思是使代码更简洁和可维护,那么您可以创建一个查找表。

示例:

var extensions = {
    '.pdf': 'pdf',
    '.doc': 'word'
    // ...
};

$('#divComment a').each(function() {
    var match = this.href.match(/\..+$/);
    if(match && extensions[match[0]]) {
        $(this).removeClass().addClass(extensions[match[0]]);
    }
});

答案 1 :(得分:1)

试试这个

$(document).ready(function(){

var extensions = {
'pdf': 'pdf',
'doc': 'word'
};


$('#divComment a').each(function() {
    var href = this.href;
    var ext = href.split('.').pop().toLowerCase();

    if(extensions[ext]) {
        $(this).addClass(extensions[ext]);
    }
});

});
来自@Felix Kling帖子的想法..

jsfiddle

答案 2 :(得分:0)

在$('#divComment a')。attr('href')上尝试切换案例。