2016-12-13 2 views
1

Ниже представлен диапазон product_qty Я хочу выбрать, но мой код не работает.Выберите класс в следующем div

<div class="pull-left"> 
    <div class="update-product"> 
     <a title="Plus This" href="#" onclick="addtoCart(531,530 ,1)"><i class="fa fa-plus-circle"></i></a> 
    </div> 
</div> 

<span class="pull-left"> 
    <span class="product_qty"></span> 
</span> 

Я нажав на кнопку анкерной в update-product DIV и функция работает как AJAX, а затем я хочу, чтобы выбрать product_qty и обновить свой HTML. Я попытался это:

$(this).closest('.pull-left').next().find('.product_qty').html(data.quantity); 

enter image description here

enter image description here

+1

Пожалуйста, покажите свой полный код. Предполагая, что вы используете этот код jQuery в глобальной области действия 'addtoCart()' function 'this' будет ссылаться на окно, а не на элемент с кликом. Если это так, используйте ненавязчивый обработчик событий. Кроме того, где определяется «данные»? –

+0

Итак, если вы используете 'this' в своей функции ajax, это больше не ваш' update-product'. Что вам нужно сделать, так это использовать ваш код, выбирая '.pull-left' вне ajax и сохраняя его до некоторой переменной, которую вы можете использовать позже. – wscourge

+0

Пожалуйста, добавьте фрагмент кода или пример, чтобы увидеть, что именно происходит, но не может привести к закрытию ответа. Я уверен, что вы хотите получить ответ на этот вопрос. –

ответ

1

Вы звоните $(this).closest('.pull-left').. внутри функции обратного вызова успеха вашего AJAX вызова, что означает this не ссылаясь на то, что вы думаете, что это (т.е. якорный тег). При вызове функция будет иметь другой «контекст».

Вы можете:

  • Обратитесь к пролету в явном виде: например, $('.pull-left .product_qty'), или
  • Как уже отмечалось в комментариях, вы можете определить и назначить переменную непосредственно перед началом вашего вызова AJAX и сохранить ссылку на этот якорный тег. Пример ниже

если вы делаете с атрибутом onclick, то вы могли бы передать элемент в функцию:

<a onclick="removeFromCart(this, 'ABCDEFXYZ', 123, 1)">Remove</a>

и

function removeFromCart(elem, hash, r_id, qty) { 
    var anchor = $(elem); 
    ... 
} 

или это будет проще если вы связываетесь с jQuery, как

$('a.remove').on('click', removeFromCart), и вам не понадобится аргумент elem в определении функции

+0

Может быть больше продуктов, чем один. 'var anchor = $ (this);' также не работает: http://prntscr.com/dizzp6 –

+0

Как связать обработчик событий с привязкой? вы используете привязку 'onclick' или' jQuery', например '$ ('a'). on ('click', removeFromCart)'? см. мою редакцию в ответ – mavili

+0

его 'onclick' -' ' –