jQuery OR运算符混淆

时间:2015-01-02 20:57:46

标签: javascript jquery operator-keyword

  <div id="my-nav-wrapper" class="noindex"> 
    <ul>
      <li><a href="http://www.dynamicdrive.com">Item 1</a></li>
      <li><a href="#">Folder 0</a>
      <ul>
        <li><a href="#">Sub Item 1.1</a></li>
        <li><a href="#">Sub Item 1.2</a></li>
        <li><a href="#">Sub Item 1.3</a></li>
        <li><a href="#">Sub Item 1.4</a></li>
        <li><a href="#">Sub Item 1.2</a></li>
        <li><a href="#">Sub Item 1.3</a></li>
        <li><a href="#">Sub Item 1.4</a></li>
      </ul>
      </li>
     </ul>
</div> 

var jQmainmenu = $("#my-nav-wrapper ul");
var settings = {classname: "whatever"};
alert("Before: " + jQmainmenu.parent().get(0).className);    
jQmainmenu.parent().get(0).className  += settings.classname || "ddsmoothmenu";
alert("After: " + jQmainmenu.parent().get(0).className);

我要做的是,如果settings动态对象的classname属性为null / falsey,则为类名&#39; ddsmoothmenu&#39;无论settings.classname值是什么,都需要apended到现有的其他地方。

 jQmainmenu.parent().get(0).className  += settings.classname || "ddsmoothmenu";

这个陈述是有效的陈述吗?它似乎工作,但我只是想确保使用这样的语法是好的吗?

我知道我可以做如下的任务:

jQmainmenu.parent().get(0).className  = settings.classname || "ddsmoothmenu";

这在语法上是正确的,但不是我想要的,因为它基本上replaces元素上的现有类值。

1 个答案:

答案 0 :(得分:2)

待办事项

jQmainmenu.parent().addClass(settings.classname || "ddsmoothmenu");

jQuery会处理浏览器的所有问题(例如并非所有IE版本都会直接尊重className的更新)