jQuery:有条件地执行没有“if”

时间:2010-01-12 20:05:16

标签: jquery

如果使用if语句将包装集大小设置为0,jQuery或javascript中是否有一种方法可以忽略所有操作。

 menu.find('a[href="#add"]'). {code that should execute only if size()>0};

我猜我通常不得不做这样的事情

var m = menu.find('a[href="#add"]');

if m.size()>0 { do something }

有没有更短的方法呢?

编辑:完整代码

menu.find('a[href="#add"]').attr("href","#add-metaobject")[0].innerText = "Add Object";

3 个答案:

答案 0 :(得分:5)

如果选择器找到0,则跟随它后面的内容无关紧要。

$(".nonExistentElement").css("color","red"); // nothing will be red

$.each()也是如此

$(".nonExistentElement").each(function(){
  World.technology.push(new PerpetualMotionMachine);
  // too bad this block will never take place
});

您可以使用三元运算符,但它实际上只是另一个条件检查:

$("#someEl").length ? alert("found") : alert("not found") ;

答案 1 :(得分:2)

修改

误解了原始问题,但在您的示例代码中,您可以像Jonathan建议的那样将操作链接起来:

menu.find('a[href="#add"]').attr("href","#add-metaobject").find(":first").text("Add Object");

答案 2 :(得分:0)

如果您对找到的每个单独对象进行操作,则可以使用.each()方法,如果未找到任何项目,则该方法将无法执行:

menu.find('a[href="#add"]').each(function() {
  // do stuff... 
});