Jquery选择器没有拉出文本

时间:2015-02-05 16:40:46

标签: php jquery opencart2.x

我在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

4 个答案:

答案 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">&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');
}

您正在更改#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">&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');
}