冒号(:)的含义可以......什么?与equal(=)相似?

时间:2014-01-29 12:59:21

标签: javascript jquery

排除":this()""if()"语句,":"运算符可能意味着什么?

在下一个例子中,我希望在<a href>个链接的集合中找到两个不相关的东西:

  • 所有没有'.ib-content'类的项目;
  • 找到符合条件“objToWhom_Id”(func传递var)的所有<span>链接中的第一个<a href>是文本。

所以,例如,在这段代码上:

init_stuff = function(objToWhom_Id) { 
   $ibItems        = $ibWrapper.find('div.ib-main > a');
   $ibImgItems     = $ibItems.not('.ib-content');

   if(objToWhom_Id == "allHTMLitems"){
       imgItemsCount = $ibImgItems.length;
   }else{
       ++imgItemsCount;
       //Here we are; notice the ":"
       $ibImgItems : $ibItems.find('span:first').filter(':contains(objToWhom_Id)');
       //
       console.log($ibImgItems.html();
   }
}

一切正常('init_stuff()'函数是Deferred,btw)...

但如果我们将上述行更改为:

       $ibImgItems = $ibItems.find('span:first').filter(':contains(objToWhom_Id)');

这应该是合理的,不再起作用了...... :-P

任何帮助?


EDITED

要测试“:”有效,你可以在最后的init_stuff()内添加(实际上主要有东西!)一个事件到尖头对象:

$ibImgItems.bind('click.ibTemplate', function(clik_$ibImgItem) {
    clik_$ibImgItem.preventDefault();
    openItem($(this));
    return false;
});

它有效,@ Hans! ; - )

3 个答案:

答案 0 :(得分:2)

: - 运算符不应该在此处执行任何操作,除非确保该行失败。我觉得您的行无法正常工作,并且在您使用: - 运算符替换=时开始工作。

似乎还有另一个错误:

$ibImgItems = $ibItems.find('span:first').filter(':contains(objToWhom_Id)');

将其更改为:

$ibImgItems = $ibItems.find('span:first').filter(':contains(' + objToWhom_Id + ')');

这有没有机会解决问题?

编辑:更多地回答您的问题::等于=的一种情况是对象文字语法:

var object = { property: value, someOtherProperty: someOtherValue };

答案 1 :(得分:2)

JavaScript中的冒号可以用作三元运算符

TestExpression ? ValueIfTrue : ValueIfFalse

或者它可以用作标签

var i = 100, a = 100;
outerloop:
while(i > 0) {
  while(a > 0) {
   a++
   if(a>50) {
     break outerloop;
   }
  }
  i++
}

或者它可用于分配键/值对

var MyObject = { keyName1: "value1", keyName2: "value2" }

答案 2 :(得分:0)

虽然不像@Hans提供的那样“干净”,但这是避免“标签”的另一种方法,使用另一个“外部”“过滤器”:

var $ibImgItems = $ibItems
                     .filter(function(){
                          return $(this).find('span:first').filter(':contains('+objToWhom_Id +')');
                     });

在这个非常特殊的情况下,我认为用“标签”的逻辑更好,以取代它。只是一个想法。

再次感谢您的所有贡献!