排除":this()"
和"if()"
语句,":"
运算符可能意味着什么?
在下一个例子中,我希望在<a href>
个链接的集合中找到两个不相关的东西:
<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
任何帮助?
要测试“:”有效,你可以在最后的init_stuff()
内添加(实际上主要有东西!)一个事件到尖头对象:
$ibImgItems.bind('click.ibTemplate', function(clik_$ibImgItem) {
clik_$ibImgItem.preventDefault();
openItem($(this));
return false;
});
它有效,@ Hans! ; - )
答案 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 +')');
});
在这个非常特殊的情况下,我认为用“标签”的逻辑更好,以取代它。只是一个想法。
再次感谢您的所有贡献!