Javascript jquery混淆代码
我正在从web示例学习Jquery和Javascript。我有很好的工作知识,但一些代码仍然绊倒了我。以下代码用于购物车隐藏签出按钮,并替换为显示有关购物车最低要求消息的div。不过有一部分代码让我很反感Javascript jquery混淆代码,javascript,jquery,cart,shopping,Javascript,Jquery,Cart,Shopping,我正在从web示例学习Jquery和Javascript。我有很好的工作知识,但一些代码仍然绊倒了我。以下代码用于购物车隐藏签出按钮,并替换为显示有关购物车最低要求消息的div。不过有一部分代码让我很反感 function getCollectionCount() { var totalCollectionCount = 0; var collection = $('td[alt*="Collection"]'); for (var i = 0; i < collect
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);
}
}
td[alt*=“Collection”]
选择其alt
属性包含Collection
的所有元素,例如:
<td alt="Collection"></td>
<td alt="CollectionFoo"></td>
<td alt="BarCollection12324343"></td>
但不是
<td></td>
<td alt=""></td>
<td alt="Foo"></td>
旁注:这是一个非常基本的问题,可以通过阅读以下内容轻松回答:
在你问之前,请尝试研究一下 这是一个jQuery属性选择器子句。它正在选择任何td
元素,该元素具有名为alt
的atrtibute,其字符串包含值Collection
包含选择器:
jQuery有许多有用的属性选择器。这是他们的主要参考页。如果您刚刚开始使用jQuery,那么非常值得一读
该代码返回其“alt”属性包含“Collection”的每个td元素
jQuery充满了这些需要永远学习的时髦快捷方式,所以我总是在桌上放一份:)这段代码可以更简单、简短地重写如下:
function getCollectionCount() {
var totalCollectionCount = 0;
$('td[alt*="Collection"] select').each(function() {
var val = this.value || "0";
totalCollectionCount += parseInt(val, 10);
});
return(totalCollectionCount);
}
这就是它的工作原理:
将totalCollectionCount初始化为0
在alt属性中查找所有具有字符串“Collection”的td元素,然后在该td中查找select元素
迭代所有符合上述条件的元素
使用select对象的值或“0”(如果没有值或为空)初始化局部变量
将该值转换为一个数字(必须将基数传递给parseInt,这样它就不会猜测),并将其添加到目前为止的小计中
返回我们找到的总数
也许jquery文档是一个好地方:这里有一个有用的站点:the。该网站的布局非常混乱,但其想法是,您清除“直接输入”文本区域,键入CSS选择器,然后单击“解释此”按钮,并将其隐藏在页面下方。我要注意,从风格上讲,使用“alt”属性值作为驱动JavaScript逻辑的工具有点不稳定或“代码臭”. 另外,您确定“*=”表示“以开头”,而不仅仅是“包含”吗?就我个人而言,我永远也记不起这样的事情。谢谢你,我从来没有想到过,但这是有道理的。所以我可以根据它的属性选择任何特定的元素?例如div[alt*=“test1”]
将选择所有
元素,属性为test1
@Pointy,那么您建议使用什么来代替alt
属性呢?您是对的,在查看您的回答后,我发现这是一个非常基本的问题,我曾打电话给自己试图弄清楚它,这是一个大得多的项目的一小部分,我只是在这一部分上被难住了。如果问题过于简单,我深表歉意,但谢谢大家的回答。“alt”属性将包含描述图像的用户指示消息,以防图像因某种原因无法显示。这种消息传递可能会被翻译成另一种语言,或者由于文体原因而发生变化,因此使用代码中的“alt”值是一种“脆弱”的构造。还有其他属性可以也应该用来控制JavaScript——比如“类”,以及HTML5的“数据任意”属性家族。
function getCollectionCount() {
var totalCollectionCount = 0;
$('td[alt*="Collection"] select').each(function() {
var val = this.value || "0";
totalCollectionCount += parseInt(val, 10);
});
return(totalCollectionCount);
}