2

我正在从网络示例中学习 Jquery 和 Javascript。我有很好的工作知识,但一些代码仍然让我感到困惑。以下代码用于购物车以隐藏结帐按钮并替换为显示有关最低购物车要求的消息的 div。虽然有一部分代码让我失望。

function getCollectionCount() {
  var totalCollectionCount = 0;    
  var collection = $('td[alt*="Collection"]');
  for (var i = 0; i < collection.length; i++) {
    var curVal = $(collection[i]).find("select").val();
    if (curVal != undefined){
      totalCollectionCount += parseInt(curVal);
    }
  }

这部分是什么意思?

var collection = $('td[alt*="Collection"]');
4

4 回答 4

7

td[alt*="Collection"]选择属性包含<td>的所有元素,例如:altCollection

<td alt="Collection"></td>
<td alt="CollectionFoo"></td>
<td alt="BarCollection12324343"></td>

但不是

<td></td>
<td alt=""></td>
<td alt="Foo"></td>

旁注:这是一个非常基本的问题,可以通过阅读jQuery 选择器 API 文档轻松回答:

在你问之前请尝试研究!

于 2011-09-25T16:28:26.633 回答
1

这段代码可以更简单、更简洁地重写,如下所示:

function getCollectionCount() {
    var totalCollectionCount = 0;    
    $('td[alt*="Collection"] select').each(function() {
        var val = this.value || "0";
        totalCollectionCount += parseInt(val, 10);
    });
    return(totalCollectionCount);
}

而且,它是这样工作的:

  1. 将 totalCollectionCount 初始化为 0
  2. 查找所有在 alt 属性中具有字符串“Collection”的 td 元素,然后在该 td 中查找 select 元素
  3. 遍历所有找到的符合上述条件的元素
  4. 使用选择对象的值初始化局部变量,如果没有值或为空,则为“0”
  5. 将该值转换为数字(必须将基数传递给 parseInt 以便它不会猜测)并将其添加到小计中。
  6. 返回我们找到的总数。
于 2011-09-25T16:56:56.260 回答
1

这是一个 jQuery 属性选择器子句。它选择任何td具有名为的属性的元素,alt其字符串包含 value Collection

包含选择器: http: //api.jquery.com/attribute-contains-selector/

jQuery 有许多有用的属性选择器。这是他们的主要参考页面。如果您刚刚开始使用 jQuery,非常值得一读

于 2011-09-25T16:30:08.017 回答
1

该代码返回其“alt”属性包含“Collection”的每个 td 元素。

http://api.jquery.com/attribute-contains-selector/

jQuery 充满了这些花时间学习的时髦快捷方式,所以我总是在我的办公桌上保留一份jQuery的副本 :)

于 2011-09-25T16:30:12.730 回答