Селектор Jquery не вытягивает текст

Я работаю внутри фреймворка OpenCart. Базовая установка имеет точно такой же код, но мой, похоже, не работает. Я не вижу никаких ошибок.

Я не уверен, как заставить мои селекторы работать в jquery. Когда приведенный ниже код выполняется, он не находит текст в диапазоне. Возвращается пустое окно с предупреждением. Я делаю что-то не так или что-то упустил?

alert($('#cart-total').text());

<button type="button"><span id="cart-total" ><?php echo $text_items; ?></span></button>

functions.min.js -> строка 197

Если вы хотите увидеть это в действии: http://oc1.theaamgroup.com/
Нажмите добавить в корзину и посмотреть.

ОБНОВИТЬ: Я добавил новую строку, чтобы помочь с процессом отладки. Когда вы нажимаете кнопку «Добавить в корзину», появляется окно с предупреждением о том, какой селектор jquery найден для # cart-total, а затем, что он должен был найти.

Вещи, которые я пробовал:

  • Изменение версий jquery

  • Перемещение файла функций для загрузки перед другими файлами

  • (Селектор работает, когда его нет в файле функций для некоторых
    причина.)

  • Те же селекторы в верхней части файла functions.min.js

  • Те же селекторы внизу файла functions.min.js

  • Вы можете запустить команду в консоли Chrome, и она отлично работает.

  • Несколько селекторов CSS.

ОБНОВЛЕНИЕ 2
В конце строки functions.min.js 498 я добавил предупреждение ($ (‘# cart-total’). Text ()); показать, что по какой-то причине общая сумма корзины ничего не возвращает, даже когда она начинается (по умолчанию BY, если в вашей корзине нет товаров) 0 товар (ов) — 0,00 $

0

Решение

Вам нужно подождать, пока корзина не будет полностью обновлена, и это произойдет только после события .load. Попробуйте обновить строку 205 functions.min.js с помощью функции обратного вызова следующим образом:

$('#cart > ul').load('index.php?route=common/cart/info ul li',function(){
alert('#cart-total inner text is: '+$('#cart-total').text()+'\n\n#cart-total inner text should be: '+json['total']);
});

Таким образом, все содержимое находится на месте, когда вы пытаетесь получить значение $ (‘# cart-total’). Text ();

Более подробную информацию о .load можно найти здесь: http://api.jquery.com/load/

4

Другие решения

Вы загружаете #cart после успешного запроса, чтобы вы могли обновить текст после извлечения контента с обратным вызовом

$('#cart > ul').load('index.php?route=common/cart/info ul li', function(){
$('#cart-total').text(json['total']);
});
1

Я пока не могу комментировать … Так что это не полный ответ, но я предлагаю, чтобы OP абстрагировал проблему в JSfiddle примерно так

http://jsfiddle.net/31c2zb0u/1/

Кроме того, вся эта уродливая разметка не обязательна для вопроса и отвлекает от сути дела.

<button type="button" onClick="cart.add('1274');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">Add to Cart</span></button>

Это вся информация, которая понадобится из приведенного выше HTML.

<button onClick="cart.add('1274');"><span style='display: none'>Add to Cart</span></button>

0

Только сценарий, на который вы ссылаетесь в своем вопросе, работает для меня. Но чтобы пойти немного дальше, я проверил вашу страницу, на которую вы ссылались, и увидел, что у вас есть функция, которая выглядит следующим образом:

if (json['success']) {
$('#content').parent().before('<div class="alert alert-success"><i class="fa fa-check-circle"></i> ' + json['success'] + '<button type="button" class="close" data-dismiss="alert">&times;</button></div>');

$('#cart-total').html(json['total']);
alert($('#cart-total').text());
$('html, body').animate({
scrollTop: 0
}, 'slow');

$('#cart > ul').load('index.php?route=common/cart/info ul li');
}

Вы меняете HTML-код #cart-totalИтак, почему вы хотите получить текст снова, если вы уже установили его с переменной? Просто сделайте следующее и измените alert($('#cart-total').text()); в alert(json['total']);

Вот так:

if (json['success']) {
$('#content').parent().before('<div class="alert alert-success"><i class="fa fa-check-circle"></i> ' + json['success'] + '<button type="button" class="close" data-dismiss="alert">&times;</button></div>');

$('#cart-total').html(json['total']);
alert(json['total']);
$('html, body').animate({
scrollTop: 0
}, 'slow');

$('#cart > ul').load('index.php?route=common/cart/info ul li');
}
-1
По вопросам рекламы [email protected]