0

我想创建一个条件语句作为样式中的例外。我的逻辑是找到当前导航的位置,如果导航有一个标志类{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>

我怎样才能让这条线返回一个布尔值 == true; 必要时?
var logoTarget = $(findActiveLi > ".logo");

4

4 回答 4

2

试试这样:

 var $logoTarget = $(".logo",findActiveLi[0]); // finds if  currentnavli has logo class
 if ($logoTarget.length > 0) {
于 2012-06-22T06:55:20.463 回答
2

或者你也可以使用

var $logoTarget = $(findActiveLi).has('.logo').length;
if($logoTarget > 0){
 // your code
于 2012-06-22T06:58:26.127 回答
1
var $logoTarget = $(findActiveLi).hasClass('logo'); 

.hasClass()

于 2012-06-22T06:59:28.310 回答
1

我想进一步扩大答案。对此事做出正确的推理很重要:

如果你写:

var logoTarget = $(findActiveLi > ".logo");

它的意思是:

比较变量findActiveLi并查看它是否大于(?)字符串 ".logo",然后将此比较的结果(在 JQuery 对象和字符串之间?!有点像比较苹果和飞机......)传递给函数"$",希望有事情发生 :)

正如您可能想象的那样,从程序员的角度来看,这完全是胡说八道。使用像 JQuery 这样的插件并不意味着它清除了常规程序语法:在文字字符串之外使用的“>”符号仍然意味着“大于”广告用于比较(主要用于数值)。

如果findActiveLi是一个字符串(不是),你可以这样做:

var logoTarget = $(findActiveLi + "> .logo");
                                  ^^^^^^^^^

通过字符串连接(例如,如果 findActiveLi 是“.activeLi”,则该表达式将成为".activeLi > .logo"有效的选择器,因为“>”现在被声明为字符串的一部分)。

它仍然对您不起作用,因为它不是字符串而是对象。对象的正确方法是使用它们的方法和属性,所以我们最终回到其他用户告诉你的内容:

var logoTarget = $(findActiveLi).has('.logo').length;

这意味着:

使用findActiveLiad 一个JQuery 对象(元素或元素集合);因此,它具有 " has(selector)" 方法,使我能够查看它是否包含选择器指定的其他元素,从而为我提供另一个元素集合;作为一个集合,我们有.length能力计算我们找到了多少这些元素。

于 2012-06-22T07:14:25.113 回答