2013-10-08 4 views
1

Если у меня есть следующий код,Как получить текущий селектор в jQuery?

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

    } 
}); 

я нужен текущий селектор внутри для переключателя заявление, например, «selector1», «selector2». Опция селектора в jQuery устарела, поэтому ее нельзя использовать. Я также использую jquery 1.4.2, поэтому, пожалуйста, постарайтесь сохранить это под этим.

+6

'jquery 4.2' ??? –

+1

можете ли вы добавить соответствующий html и, возможно, сделать [jsfiddle] (http://www.jsfiddle.net)? – dax

+0

@ArunPJohny opps. Я имел в виду 1.4.2 – Metropolis

ответ

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) { 

    } 
}); 

Working demo

Ссылка:

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

+2

. ТЕКУЩИЙ СЕЛЕКТОР, похоже, не является хорошим именем для переменной, не так ли? – Oliboy50

+0

«класс» также не является хорошим именем: P – Curt

+0

Что делать, если есть несколько классов? –

0

Вот четыре способа обработки вашего вопроса:

1) класс, если у вас есть только один на один элемент:

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

    } 
}); 

2) уникальные идентификаторыне хорошие , если вы хотите использовать его несколько раз

$("#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) { 
    // 
} 
+0

Не работает с несколькими классами – Metropolis

+0

@Metropolis проверить мои изменения, пожалуйста. –

+0

Да, 4, это то, что у меня было до этого. Я пытался это сделать. Может быть, третий ... Пытаюсь понять это. – Metropolis

0

Если вы используете JQuery 1.4.2, почему вы не можете использовать .selector имущество? Он не устарел до 1,7.

+0

Если его усталость, почему я хочу использовать что-то, мне придется вернуться и удалить позже? – Metropolis

Смежные вопросы