1

如果我有以下代码,

$(".selector1, .selector2, .selector3").click(function() {
    switch(CURRENT SELECTOR) {

    }
});

我需要内部的当前选择器用于 switch 语句,例如“selector1”、“selector2”。jQuery 中的选择器选项已弃用,因此无法使用。我也在使用 jquery 1.4.2,所以请尽量保留它。

4

3 回答 3

3

使用attr函数获取被点击元素的类值:

$(".selector1, .selector2, .selector3").click(function() {
    var elem_class = $(this).attr("class");
    switch(elem_class) {

    }
});

如果元素有多个类,你可以这样做:

$(".selector1, .selector2, .selector3").click(function() {
    var arr = ["selector1", "selector2", "selector3"];
    var arr2 = $(this).attr("class").split(" ");
    var choosen_one = false;
    for(var i=0; i<arr.length; i++) {
       for(var j=0; j<arr.length; j++) {
          if(arr[i] === arr2[j]) {
             choosen_one = arr2[j];
             break;
          }
       }
       if(choosen_one) {
           break;
       }
    }

    switch(choosen_one) {

    }
});

工作演示

参考:

http://api.jquery.com/attr/

于 2013-10-08T15:56:19.630 回答
0

以下是处理您的问题的四种方法:

1)如果每个元素只有一个

$(".selector1, .selector2, .selector3").click(function() {
    switch($(this).attr("class")) {

    }
});

2)唯一ID 不好,如果你想多次使用它

$("#selector1, #selector2, #selector3").click(function() {
    switch($(this).attr("id")) {

    }
});

3)唯一选择器

$("[data-selector=selector1], [data-selector=selector2], [data-selector=selector3]").click(function() {
    switch($(this).data("selector")) {

    }
});

4)多个事件处理程序

$(".selector1").click(function() {
    myFunction($(this));
});

$(".selector2").click(function() {
    myFunction($(this));
});

$(".selector3").click(function() {
    myFunction($(this));
});

function myFunction(myThis) {
    //
}
于 2013-10-08T15:57:31.377 回答
0

如果您使用的是 jQuery 1.4.2,为什么不能使用该.selector属性?它直到 1.7 才被弃用。

于 2013-10-08T16:08:28.563 回答