Как получить идентификатор элемента при вводе функции с помощью $ (this)?

0

Я пытаюсь получить "id" элемента с щелчком, но у меня возникают трудности.

Вот то, что я пытаюсь сделать в контексте. При нажатии #display-p_1:

<div id="display-p_1"> <a href='#content_div'> Panel 1</a></div>    

Я хочу захватить "идентификатор" элемента, затем удалить последнюю цифру "id", присвоить ее индексу и запустить функцию runIt().

$(this).click(function() {
        var id = $(this).attr('id');  //this line isn't working
        n = id.slice(-1);
        runIt();  
    });   

Я думаю, что $(this) не относится к правому элементу внутри функции.

  • 3
    $ (this) .click (function () выглядит подозрительно. Что такое «это» в этом случае?
  • 0
    Для записи, в html4 идентификатор не должен содержать тире.
Показать ещё 2 комментария
Теги:

2 ответа

0
Лучший ответ
$("[id^=display-p_]").on("click", function(){
    //stuff
});

Это накладывает обработчик кликов на все элементы, у которых есть идентификатор, начинающийся с "display-p_"

Соответствующая документация по jQuery

Поскольку мой ответ уже выбран, я отредактирую его с помощью кода @scunliffe split(), поскольку это лучшее решение для этой части.

$("[id^=display-p_]").on("click", function(){
    var divID = this.id;
    n = divID.split('_')[1];//this is assigning the string... use parseInt if you want a number
    runIt(n);//assuming you want to pass in the result
});
  • 0
    Это оно! Спасибо!
1

Когда у вас есть элемент в вашем обработчике, вы можете получить id двумя способами:

Я в целом применяю это ко всем элементам div но вы хотите сделать это классом или чем-то еще.

$('div').click(function(){
  var fastAccessToID = this.id;
  var slowerAccessToID = $(this).attr('id');
});

Что касается вас, вы надеетесь снять последнюю цифру... Я думаю, вы хотите получить номер после подчеркивания. Например, "13" против "3", если идентификатор был "display-p_13"?

Таким образом,...

$('div.someClass').click(function(){
  var divID = this.id;
  n = divID.split('_')[1];//this is assigning the string... use parseInt if you want a number
  runIt();
});
  • 0
    это не объясняет, почему это не работает для ОП
  • 0
    Это интересно, хотя. Это потому, что в этот момент «this» уже не является объектом jQuery, а вызов «$ (this)» создает его? Никогда раньше не видел эту оптимизацию столь любопытную, как рассуждения.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню