如何编写选择器,使其显示
var myDefault;
if $('th.default') {
myDefault = $('th.default');
} else {
myDefault = $('th:eq(2)'); // 3rd column
}
它可能使用类似的东西:
var myDefault = $('th.default') || $('th:eq(2)');
除非第一个选择没有返回falsey,如果没有class =“default”。
答案 0 :(得分:6)
var myDefault = $('th.default').length ? $('th.default') : $('th:eq(2)');
或者,如果你喜欢缓存:):
var defaultElement = $('th.default');
var myDefault = defaultElement.length ? defaultElement : $('th:eq(2)');
答案 1 :(得分:2)
var myDefault = $('th.default');
if (!myDefault.length) { myDefault = $('th:eq(2)'); }
答案 2 :(得分:1)
var myDefault;
if ($('th.default').length) {
myDefault = $('th.default');
} else {
myDefault = $('th:eq(2)'); // 3rd column
}
答案 3 :(得分:1)
您需要使用
if $('th.default').length {}
您的条件返回true,因为所有对象都为真。您的对象可能是一个空的jQuery选择器,但这仍然会返回true。如果您的选择器没有匹配项,length
将返回“0”,这是假的。
编辑:我将此作为一种方法......应该是属性!
答案 4 :(得分:1)
$('th.default')
将返回一个jQuery对象,因此永远不会是false
。
您可以使用数组表示法来检查元素:如果元素匹配(并且将包含第一个匹配的元素),$('th.default')[0]
将返回true
,如果没有,则返回false
匹配的元素。
您可以使用三元运算符测试和设置myDefault
:
var myDefault = $('th.default')[0] ? $('th.default') : $('th:eq(1)');
Here's a working demo.只需删除class="default"
即可在两者之间切换。