在jQuery中编写if / then语句

时间:2011-04-20 16:33:08

标签: jquery

如何编写选择器,使其显示

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”。

5 个答案:

答案 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"即可在两者之间切换。