'DRY'jQuery点击功能

时间:2013-01-27 22:22:48

标签: jquery dry

我有一个无序的链接列表,它们都对应于我的JS文件中的不同事件。现在我正在使用

$('#gst').click(function(){
    preset(gst);
});
$('#gsd').click(function(){
    preset(gsd);
});
$('#ts').click(function(){
    preset(ts);
});
$('#none').click(function(){
    preset(none);
});

这是我的预设功能:

function preset(setter){
if(setter === gst){
    currentPreset = gTitle;
    $('#count').html(currentPreset);
}else if(setter === gsd){
currentPreset = gDesc;
}else if(setter === ts){
currentPreset = tLimit;
}else{
currentPreset = none;
$('#count').html(currentPreset);
}
}

它看起来很可怕。我知道有一种'干'方法可以做到这一点。但我还没有找到一个。有谁知道最好的方法吗?太棒了!

由于

3 个答案:

答案 0 :(得分:4)

$("#gst, #gsd, #ts, #none").click(function(){
    preset(this.id);
});

答案 1 :(得分:3)

function handleClick() {
    preset(window[$(this).attr('id')]);
}

$('#gst, #gsd, #ts, #none').click(handleClick);

答案 2 :(得分:1)

使预设以字符串作为参数,然后按照

的顺序执行某些操作
$('.classGivenToAll').click(function() {
    preset($(this).attr("id"));
});

我以这种方式获取id,以防你想要切换出任何其他属性。