我在opencart的框架内工作。基本安装具有完全相同的代码,但我似乎没有工作。我没有看到任何错误。
我不确定如何在jquery中使我的选择器工作。运行以下代码时,它无法找到范围中的文本。它返回一个空警报框。我做错了什么或遗失了什么?
alert($('#cart-total').text());
<button type="button"><span id="cart-total" ><?php echo $text_items; ?></span></button>
functions.min.js - &gt;第197行
如果你想看到它的实际效果:http://oc1.theaamgroup.com/ 按添加到购物车并观看。
更新:我添加了一个新行来帮助调试过程。当你按下添加到购物车时,会弹出一个警告框,告诉你找到#cart-total找到的jquery选择器,然后找到它应该找到的内容。
我尝试过的事情:
更改jquery版本
移动函数文件以在其他文件之前加载
(当选择器不在函数文件中时,选择器工作 原因)。
在functions.min.js文件顶部的相同选择器
functions.min.js文件底部的相同选择器
您可以在Chrome控制台中运行该命令,它可以正常工作。
多个css选择器。
更新2 在functions.min.js第498行的末尾,我添加了alert($(&#39;#cart-total&#39;)。text());显示无论出于何种原因,购物车总数即使在启动时也不会返回任何内容(默认情况下,如果您的购物车中没有商品)0件商品 - $ 0.00
答案 0 :(得分:4)
您需要等到购物车完全更新,并且直到.load事件之后才会发生。尝试使用类似的回调函数更新functions.min.js的第205行:
$('#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']);
});
这样,当您尝试获取$(&#39;#cart-total&#39;)的值时,所有内容都已到位.text();
有关.load的更多信息,请访问:http://api.jquery.com/load/
答案 1 :(得分:1)
您在成功请求后加载#cart
,因此您可以在使用回调获取内容后更新文本
$('#cart > ul').load('index.php?route=common/cart/info ul li', function(){
$('#cart-total').text(json['total']);
});
答案 2 :(得分:0)
我无法发表评论......所以这不是一个完整的答案,但我建议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>
答案 3 :(得分:-1)
只有您在问题中提到的脚本才适合我。但是为了更进一步,我检查了你链接的页面,发现你有一个看起来像这样的功能:
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');
}
您正在更改#cart-total
的html,那么如果您已经使用变量设置了文本,为什么还要再次获取文本?只需执行以下操作,然后将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');
}