我需要在文档就绪和按钮点击时启动功能。如果单击了按钮,则需要检测单击的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(){ });
答案 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);
});
答案 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');
}
}
将点击的元素对象引用传递给您的函数。
演示: