Javascript 请解释一下语法
我试图理解下面两行不同的代码。我的javascript很弱,试图用jquery(hmmmm)来改进它 我试图使用的是drag sort插件,具体来说,我使用的是这个示例 我现在已经到了使用这种方法的阶段Javascript 请解释一下语法,javascript,jquery,Javascript,Jquery,我试图理解下面两行不同的代码。我的javascript很弱,试图用jquery(hmmmm)来改进它 我试图使用的是drag sort插件,具体来说,我使用的是这个示例 我现在已经到了使用这种方法的阶段 var serialStr = ""; $("#list1 li").each(function(i, elm) { serialStr = (i > 0 ? "|" : "") + $(elm).children().html(); }); 该示例具有以下内容 var se
var serialStr = "";
$("#list1 li").each(function(i, elm) {
serialStr = (i > 0 ? "|" : "") + $(elm).children().html();
});
该示例具有以下内容
var serialStr = new Array();
$("#list1 li").each(function(i, elm) {
serialStr[] = = $(elm).attr("itemId");
});
我采用第一种方法的原因是,我正在测试所有内容,以及它们在HTML示例中的内容。我现在试图保存状态,所以我转到php示例
所以我的问题是,在这里不同的行中,主要的区别是什么?我对第一行的理解是,它选择列表1上li标记内部的每个子元素,我实际上没有得到(I>0?”|“:”)位
根据我的理解,在第二个snipplet中,它使用列表1中的itemID受让人选择每个属性 serialStr[]=(i>0?”|“:”)+$(elm).children().html()
是if子句的缩写。其作用与:
if(i > 0) {
serialStr[] = "|" +$(elm).children().html();
} else {
serialStr[] = "" +$(elm).children().html();
}
表达式(i>0?|“:”)
使用to不在第一个值前面加|
,而只在后面的每个值前面加前缀
但是表达式
serialStr[]=$(elm).attr(“itemId”)
的语法无效。Javascript不像PHP那样有推送操作符[]
。请改用。我认为您粘贴的代码与这两个代码片段都不完全一样。第一种方法似乎希望将字符串连接在一起,但缺少能够实现这一点的+=
;第二种方法是创建一个列表,可能是在之后将()连接到一起,但是使用了一些JavaScript中不存在的奇怪的语法
我没有真正得到(I>0?|“:”)位
第一次循环时,选择”
,随后选择“|”
。这是制作字符串的传统方法,其中每个元素由一个字符分隔
但通常是一种更简洁的方法,您可以使用在返回新数组的数组上运行函数,而不必手动创建一个数组:
var itemIds= $('#list1 li').map(function() {
return $(this).attr('itemId');
}).get().join('|');
(或$(this).html()
如果您真的想获取html内容,这听起来有点可疑。)
map()
是一个jQuery函数,但是ECMAScript第五版在普通数组上也有一个map()
方法 @Reigel:它只是一个三元运算符,因此有三个操作数。官方术语是条件运算符。谢谢,我不知道它的名字:P