使用$(this)输入函数时如何获取元素的id?

时间:2014-01-09 19:10:24

标签: jquery

我正在尝试获取点击元素的“id”,但遇到了困难。

这是我在上下文中尝试做的事情。点击#display-p_1时:

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

我想获取元素的“id”,然后去除“id”的最后一位,将其分配给索引,然后运行函数runIt()

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

我认为$(this)并不是指函数中的正确元素。

2 个答案:

答案 0 :(得分:1)

如果处理程序中有元素,则可以通过两种方式获取id

我通常将此应用于所有div元素,但您希望通过类或其他内容来执行此操作。

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

至于你希望剥掉最后一位数......我想你想得到下划线之后的数字......例如如果id是“display-p_13”,则“13”与“3”相对应?

...因而

$('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();
});

答案 1 :(得分:0)

$("[id^=display-p_]").on("click", function(){
    //stuff
});

这会将click处理程序放在所有id为“display-p _”

的元素上

Relevant jQuery documentation

由于我的答案已被选中,我将使用@ 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
});