Я работаю внутри фреймворка 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 $
Вам нужно подождать, пока корзина не будет полностью обновлена, и это произойдет только после события .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/
Вы загружаете #cart
после успешного запроса, чтобы вы могли обновить текст после извлечения контента с обратным вызовом
$('#cart > ul').load('index.php?route=common/cart/info ul li', function(){
$('#cart-total').text(json['total']);
});
Я пока не могу комментировать … Так что это не полный ответ, но я предлагаю, чтобы 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>
Только сценарий, на который вы ссылаетесь в своем вопросе, работает для меня. Но чтобы пойти немного дальше, я проверил вашу страницу, на которую вы ссылались, и увидел, что у вас есть функция, которая выглядит следующим образом:
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">×</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">×</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');
}