Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';干燥和#x27;jQuery单击函数_Jquery_Dry - Fatal编程技术网

';干燥和#x27;jQuery单击函数

';干燥和#x27;jQuery单击函数,jquery,dry,Jquery,Dry,我有一个无序的链接列表,所有链接都对应于我的JS文件中的不同事件。现在我正在使用 $('#gst').click(function(){ preset(gst); }); $('#gsd').click(function(){ preset(gsd); }); $('#ts').click(function(){ preset(ts); }); $('#none').click(function(){ preset(none); }); 这是我的预设功能: fu

我有一个无序的链接列表,所有链接都对应于我的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);
}
}
而且看起来很可怕。我知道有一种“干燥”的方法可以做到这一点。但我还没有找到。有人知道最好的方法吗?那太棒了


谢谢

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

$('.classGivenToAll').click(function() {
    preset($(this).attr("id"));
});

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

您的预设函数是什么样子的?添加了,很抱歉格式化。粘贴代码。使用一个类或多个表达式选择器,并在触发事件的元素中使用html5不显眼的方式
data-atributes
,如
data setter=“gst”
,在js中只需通过
$(this)获取即可。attr('data-setter')
非常欢迎:)正如其他人所说,您可能会看到使用类的好处,并将所述类分配给希望在其上使用此可单击功能的所有元素。我在回答中没有提到这一点的原因是因为您似乎在寻找静态解决方案,希望您可以:)。
function handleClick() {
    preset(window[$(this).attr('id')]);
}

$('#gst, #gsd, #ts, #none').click(handleClick);
function handleClick() {
    preset(window[$(this).attr('id')]);
}

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