jQuery检测单击了哪个id

时间:2014-11-01 08:55:21

标签: javascript jquery

我需要在文档就绪和按钮点击时启动功能。如果单击了按钮,则需要检测单击的id。

开始我做的功能

process_add_to_chart();// this is for document ready
$( '[id^="button_add_to_cart_"]' ).click(function(){
process_add_to_chart();
});

然后

function process_add_to_chart(){   }

函数启动,但是如何获取id的attr?

var id = $(this).attr('id');

不起作用。获取未定义

啊,对不起,似乎必须在

中定义全局ID
$( '[id^="button_add_to_cart_"]' ).click(function(){   });

2 个答案:

答案 0 :(得分:1)

因为您在真实处理程序(process_add_to_char)内调用了function () { ... }),所以会丢失原来的this"上下文" (单击的元素),this现在是window对象。

所以,你需要像这样绑定处理程序:

$( '[id^="button_add_to_cart_"]' ).click(process_add_to_chart);

然后,this将成为点击的元素。


另一种方法是使用call方法将this参数传递给内部函数,如下所示:

$( '[id^="button_add_to_cart_"]' ).click(function(){
     process_add_to_chart.call(this);
});

进一步阅读:JavaScript - The this keyword

答案 1 :(得分:1)

$('[id^="button_add_to_cart_"]').click(function(){
   process_add_to_chart(this);
});

function process_add_to_chart(obj){
  if(obj != null){
   var id = $(obj).attr('id');
  }
}

将点击的元素对象引用传递给您的函数。

演示:

http://jsfiddle.net/9y8bLg22/