2014-11-01 113 views
0

我需要启动文档准备功能和按钮单击。如果点击按钮,则需要检测点击了哪个ID。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(){ } 

功能启动,但如何让ATTR的id?

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

不起作用。得到了一个未定义

啊,对不起,好像因为你叫process_add_to_char真正的处理程序(function() { ... })),你就失去了原有的this“上下文”(点击的元素)内必须定义里面

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

回答

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/

1

全球ID,和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