我想创建一个条件语句作为样式中的异常。我的逻辑是找到当前导航的位置,如果导航具有徽标类{expression}
脚本
$('li.navCenter').on('click', function () {
var findActiveLi = $('.footerUl').find(".currentFooterNav");//fine location of current navitation
var logoTarget = $(findActiveLi > ".logo"); // finds if currentnavli has logo class
if ($(logoTarget) == true) {
$("ul.logoUl > li").removeClass('orange blue green pink').addClass('grayLogo').css({
'background-color': ''
});
}
});
HTML ( .currentFooterNav将移动)
<footer id="footer">
<nav>
<ul class="footerUl">
<li id="worksFooterNavi" class="navi"><a href="#">works</a></li>
<li id="aboutFooterNavi" class="navi"><a href="#">about</a></li>
<li class="homeFooterNavi navi currentFooterNav currentAll"><a href="#" title="logo">
<div class="logo activeFooter">
<ul class="logoUl">
<li class="orange"></li>
<li class="blue"></li>
<li class="green"></li>
<li class="pink"></li>
</ul>
</div>
</a>
</li>
<li id="contactFooterNavi" class="navi"><a href="#">contact</a></li>
<li id="followFooterNavi" class="navi"><a href="#">follow</a></li>
</ul>
</nav>
</footer>
如何让这一行返回一个boolean == true;必要时?
var logoTarget = $(findActiveLi > ".logo");
答案 0 :(得分:2)
试试这样:
var $logoTarget = $(".logo",findActiveLi[0]); // finds if currentnavli has logo class
if ($logoTarget.length > 0) {
答案 1 :(得分:2)
或者您也可以使用
var $logoTarget = $(findActiveLi).has('.logo').length;
if($logoTarget > 0){
// your code
答案 2 :(得分:1)
var $logoTarget = $(findActiveLi).hasClass('logo');
答案 3 :(得分:1)
我想扩大到答案。在此问题上做出正确的推理非常重要:
如果你写:
var logoTarget = $(findActiveLi > ".logo");
意思是:
比较变量
findActiveLi
,看看它是大于(?) string".logo"
,然后传递的结果这个比较(在一个JQuery对象和一个字符串之间?有点像比较苹果和飞机......)到函数"$"
,希望发生一些事情:)
正如您可能想象的那样,从程序员的角度来看,这完全是胡说八道。使用像JQuery这样的插件并不意味着它会刷掉常规程序语法:“&gt;”在文字字符串之外使用的符号仍然意味着“大于”广告用于比较(主要是数值值)。
如果findActiveLi
是字符串(不是),您可以这样做:
var logoTarget = $(findActiveLi + "> .logo");
^^^^^^^^^
通过字符串连接(f.ex.如果findActiveLi是“.activeLi”,该表达式将成为".activeLi > .logo"
制作有效的选择器,因为“&gt;”现在被声明为字符串的一部分。)
它仍然不适合你,因为它不是字符串而是对象。对象的正确方法是使用他们的方法和属性,所以我们最终回到其他用户告诉你的内容:
var logoTarget = $(findActiveLi).has('.logo').length;
这意味着:
使用
findActiveLi
ad JQuery对象(元素或元素集合);因此它有“has(selector)
”方法,使我能够看到它是否包含选择器指定的其他元素,给我另一个元素集合;作为一个集合,我们有.length
属性来计算我们找到的这些元素的数量。