如果$('.item:last').attr('id').split('-')[1]
不是undefined
var liid
等于,undefined
则等于null
答案 0 :(得分:3)
var liid = $('.item:last').attr('id').split('-')[1] || null;
这在JavaScript中,逻辑或(||
)运算符的工作方式与您以前的工作方式不同。 ||
将返回其左操作数,如果它是“真实的y”。真值y值是以下值之一:
true
答案 1 :(得分:2)
假设.item:last定义为:
var liid = typeof $('.item:last').attr('id').split('-')[1] != undefined ? $('.item:last').attr('id').split('-')[1] : null;
否则:
var liid = $('.item:last').length > 0 ? $('.item:last').attr('id').split('-')[1] : null;
答案 2 :(得分:2)
var parts= $('.item').last().attr('id').split('-');
var liid= parts.length>=1? parts[1] : null;
尽可能避免:last
和其他jQuery特定的非标准选择器,因为它们会导致使用相对较慢的'Sizzle'选择器引擎而不是内置的快速浏览器{现代浏览器上的{1}}方法。首先使用jQuery导航功能。
虽然您可以像以前的答案一样使用querySelectorAll
来获得更短的表达,但这有一些警告可能会或可能不会影响您。我个人更喜欢明确我正在做什么测试。
特别是,空字符串也是'falsy',因此如果|| null
恰好是null
,则会返回id
值。
如果你的问题是如何用'JavaScript'来写,即。没有jQuery:
a--b
然而,这使用了HTML5 var els= document.getElementsByClassName('item');
var parts= els[els.length-1].id.split('-');
...
方法,并非所有浏览器都支持该方法,因此您必须为此添加后备支持(请参阅此主题的前几个问题)。
答案 3 :(得分:1)
只做
var liid = (typeof($('.item:last').attr('id').split('-')[1]);
liid = typeof(liid) == 'undefined' ? null : liid;
或做if语句。
答案 4 :(得分:1)
var value = $('.item:last').attr('id').split('-')1;
(value == undefined) ? liid = value : liid = null;
运算符称为三元条件运算符,有时也称为ternary operator。关于undefined,null等的信息是here。
另外,我将$('.item:last').attr('id').split('-')1
存储在变量中,以便下次我想获得该值时,机器不必通过调用多个函数来重新计算它;从内存中读取一个简单的就足够了。
答案 5 :(得分:0)
var liid=$('.item:last').attr('id').split('-')[1];
liid?'':liid=null;
只有当$('。item:last')。attr('id')。split(' - ')[1]未定义时等于除了等于false的值之外的其他内容,例如{ {1}}或空字符串0
;
答案 6 :(得分:0)
只需在表达式后面添加|| null
即可将其用作默认值:
var liid = $('.item:last').attr('id').split('-')[1] || null