0

我在 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/ 按添加到购物车并观看。

更新:我添加了一个新行来帮助调试过程。当您按下添加到购物车时,会弹出一个警告框,告诉您为 #cart-total 找到的 jquery 选择器以及它应该找到的内容。

我尝试过的事情:

  • 更改 jquery 版本

  • 移动函数文件以在其他文件之前加载

  • (由于某种原因,选择器不在函数文件中时才起作用。)

  • functions.min.js 文件顶部的相同选择器

  • functions.min.js 文件底部的相同选择器

  • 您可以在 chrome 控制台中运行该命令,它工作正常。

  • 多个 CSS 选择器。

更新 2 在 functions.min.js 第 498 行的末尾,我添加了 alert($('#cart-total').text()); 表明无论出于何种原因,cart-total 即使在启动时也没有返回任何内容(默认情况下,如果您的购物车中没有产品)0 件 - 0.00 美元

4

4 回答 4

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']);
});

这样,当您尝试获取 $('#cart-total').text(); 的值时,所有内容都已到位

有关 .load 的更多信息可以在这里找到:http: //api.jquery.com/load/

于 2015-02-11T17:20:48.920 回答
1

#cart在成功请求后加载,因此您可以在使用回调获取内容后更新文本

$('#cart > ul').load('index.php?route=common/cart/info ul li', function(){
    $('#cart-total').text(json['total']);
});
于 2015-02-11T17:26:17.937 回答
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>

于 2015-02-05T17:00:32.077 回答
-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">&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');
}
于 2015-02-05T16:52:13.640 回答