【问题标题】:jQuery OR operator confusionjQuery OR 运算符混淆
【发布时间】:2015-01-02 20:57:46
【问题描述】:
  <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 动态对象的类名属性为 null/falsey,则无论 settings.classname 的值如何,类名 'ddsmoothmenu' 都必须是现有的 apended

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

这个陈述是一个有效的陈述吗?它似乎有效,但我只是想确保可以使用这种语法?

我知道我可以像下面这样做作业:

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

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

【问题讨论】:

  • 您是否研究过 jQuery .addClass().removeClass().hasClass() 方法?
  • jQuery 是一个没有运算符的 JavaScript 库。
  • 我有并且我知道它们可供我使用,但这是针对某人编写的旧插件,我只想修改插件以附加类名而不是替换。
  • 如果将名称附加到原始类名字符串,则必须确保添加空格字符。这真的不是最好的做事方式。
  • @Pointy 告诉我你会怎么做??

标签: javascript jquery operator-keyword


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多