2014-11-01 2 views
0

Мне нужно запустить функцию на готовом документе, а также нажать кнопку. Если кнопка нажата, необходимо определить, какой идентификатор щелкнул.jQuery обнаруживает, какой идентификатор щелкнул

Для запуска функции я

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(){ } 

Функция, но как получить атр удостоверения личности?

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

не работает. Получить неопределенными

Ах, извините, кажется, должен определить глобальный идентификатор внутри

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

Передайте ссылку на объект элемента элемента click to your funct ион.

Демо:

http://jsfiddle.net/9y8bLg22/

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

Смежные вопросы