如何在JQuery中将重复的[onClick]语句写入单行?

时间:2015-06-15 07:00:47

标签: javascript jquery

如何将以下语句写入一行?

$("#pushkar").on("click", function () {
        gula.hideUnhide("#pushkarDiv", "#pushkar", "#pushkar");
    });
    $("#rashkar").on("click", function () {
        gula.hideUnhide("#rashkarDiv", "#rashkar", "#rashkar");
    });
    $("#kashkar").on("click", function () {
        gula.hideUnhide("#kashkarDiv", "#kashkar", "#kashkar");
    });
    $("#fuskar").on("click", function () {
        gula.hideUnhide("#fuskarDiv", "#fuskar", "#fuskar");
    });
    $("#ashke").on("click", function () {
        gula.hideUnhide("#ashkeDiv", "#ashke", "#ashke");
    });

我有大约20个如上所述的陈述,所有陈述都占用了大量空间。

我被告知要停止重复并为所有人制作一条线;它累积每个按钮ID。

用单线写出来是更好的策略吗?它不会损害可读性吗?

3 个答案:

答案 0 :(得分:3)

试试这个:

$("#pushkar, #rashkar, #kashkar, #fuskar, #ashke").on("click", function () {
    var id = "#" + this.id;
    gula.hideUnhide(id + "Div", id, id);
});
顺便说一下,保持一个普通班级总是更好。然后你可以这样做:

$(".commonClass").on("click", function () {
    var id = "#" + this.id;
    gula.hideUnhide(id + "Div", id, id);
});

注意:您发送两次相同的参数,这似乎是不必要的,但我只保留它。

只是给你一个建议,似乎没有必要传递三个论点。只有一个论点会很有效。例如:

hideUnhide(id){
    var divId = id + "Div";
    // other code here
}

然后点击事件:

gula.hideUnhide("#" + this.id);

答案 1 :(得分:2)

您可以在逗号分隔的多个元素上添加多个事件处理程序,如下所示。

$('#pushkar, #rashkar, #kashkar, #fuskar, #ashke').on('click', function() {
    var divId = $(this).attr('id'); // Get the id of clicked element

    gula.hideUnhide('#' + divId + 'Div', '#' + divId, '#' + divId);
});

答案 2 :(得分:0)

在jquery中使用多个选择器 $('selector1,selector2,selector3'... selectorn)

$("#pushkar, #rashkar, #kashkar, #fuskar, #ashke").on("click", function () {
        var id = $(this).attr('id');
        gula.hideUnhide("#"+id+"Div", "#"+id, "#"+id);
 });