2016-05-04 5 views
2

Я глобальная функция, определенная в одном месте:JQuery `this` вопрос сфера

function addToCart(){ 
    var prodText = $(this).parent().siblings(".item1").text(); 
    $("#"+prodId+"shopC").children(".item1").text(prodText); 
    alert(prodText); 
} 

Затем я хочу вызвать его внутри HTML-элемента с инлайн onClick событие: onClick='addToCart() '

Он не работает, но он работает, если я поместил код функции непосредственно в событие onClick, поэтому это должно быть проблема с областью this. Существует много вопросов/объяснений по поводу области, но я должен признаться, что пропустил простой прямой ответ для этого конкретного случая (я тоже успешно использовал "use strict"). Как это сделать?

+0

Назовите его так: 'onClick = 'addToCart (this)' 'и в вашем методе замените это параметром, переданным отсюда – gurvinder372

ответ

4

В соответствии с текущей реализацией this не относится к элементу, вызывающему функцию. Он относится к объекту window.

Вам необходимо пройти текущий контекст элемента т.е. this функции, как

onClick='addToCart(this)' 

и изменить функцию, чтобы принять элемент в качестве параметра.

function addToCart (elem){ 
    var prodText = $(elem).parent().siblings(".item1").text(); 
    $("#"+prodId+"shopC").children(".item1").text(prodText); 
    alert(prodText); 
} 
1

В основном this внутри обычной функции будет указывать на window. вам необходимо передать контекст this на встроенный обработчик onClick='addToCart(this)'. Получите его и используйте его внутри обработчика событий, как показано ниже.

function addToCart (_this){ 
    var prodText = $(_this).parent().siblings(".item1").text(); 
0

вы должны пройти это ключевое слово, где вы рядный вызов функции AddToCart, то вы можете захватить этот элемент

onClick='addToCart(this)' 
0

this объект в функции не указывает на объект, где вы добавили функцию onClick к. Это скорее указывает на объект window.

Вам необходимо передать this в качестве параметра вашей функции.

function addToCart (trigger) { // Code goes here } 

и вызвать addToCart(this) в вашем onClick.

Подробнее о this в javascript здесь.

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