【问题标题】:Conditional statement to change class by id for multiple list items通过 id 为多个列表项更改类的条件语句
【发布时间】:2014-08-28 01:20:19
【问题描述】:

我有 2 个带有列表项的 div,我试图在放置时切换类。代码如下所示。

<div class="wrapper">                                           
    <div id="togglelinks" class="left-column">
        <ul id="sortable1" class="sortable">
            <li class="ui-state-default"><a href=""><img src="img/icon-music.svg" /></a></li>
            <li class="ui-state-default"><a href=""><img src="img/icon-nav.svg" /></a></li>
            <li class="ui-state-default"><a href=""><img src="img/icon-seats.svg" /></a></li>
            <li class="ui-state-default"><a href=""><img src="img/icon-phone.svg" /></a></li>
            <li class="ui-state-default"><a href=""><img src="img/icon-weather.svg" /></a></li>
            <li class="ui-state-default"><a href=""><img src="img/icon-email.svg" /></a></li>
            <li class="ui-state-default"><a href=""><img src="img/icon-calendar.svg" /></a></li>
        </ul>
    </div>
    <div id="stage" class="right-column">
        <ul id="sortable2" class="sortable">
            <li id="music" class="stagearea"><!-- Content Here --></li>
            <li id="nav" class="stagearea"><!-- Content Here --></li>
            <li id="climate" class="stagearea"><!-- Content Here --></li>
            <li id="phone" class="stagearea"><!-- Content Here --></li>
            <li id="weather" class="stagearea"><!-- Content Here --></li>
            <li id="email" class="stagearea"><!-- Content Here --></li>
           <li id="calendar" class="stagearea"><!-- Content Here --></li>
        </ul>
    </div>
</div>

我正在尝试将类从“stagearea”类切换到另一个由列表项中设置的唯一 ID 拉动的类。我的 javascript 看起来像这样。

<script>
  if ($("#music").addClass('droppedmusic')) {       
  }
  else if ($("#nav").addClass('droppednav')) {
  }
  else if ($("#climate").addClass('droppedclimate')) {
  } 
  else if ($("#phone").addClass('droppedphone')) {
  }
  else if ($("#weather").addClass('droppedweather')) {
  }
  else if ($("#email").addClass('droppedemail')) {
  }
  else if ($("#calendar").addClass('droppedcalendar')) {
  }
</script>

到目前为止,我能够为第一个列表项提取类,但其余的都没有。有什么帮助吗?

【问题讨论】:

  • 你以 ID 为目标,添加一个类,然后检查集合中是否有 多个 元素,因为 ID 是唯一的,jQuery 只会永远获取具有给定 ID 的第一个元素,这些集合中将有 NEVER 多个。
  • 对于每个不同的 id,我都设置了类集,我希望将其应用于列表项。每一个都是独一无二的尺寸。
  • 你不明白,$("#climate").length 最多不会超过1,因为 jQuery 将不会获取具有相同 ID 的多个元素。跨度>
  • 好的,我刚刚更改了我的 javascript,但我仍然只是让第一堂课拉下来。我更新了我现在在上面使用的内容。
  • 您的if 语句没有任何作用。您正在添加一个类作为if条件。您的第一个条件每次都返回true,因为$("#music") 不是“假”值。您只是向其中添加一个类,然后 JS 说“是的,它就在那里”并从您的代码中消失。

标签: javascript jquery toggle conditional-statements


【解决方案1】:

下面这样的事情怎么样。不需要身份证:

<div id="stage" class="right-column">
    <ul id="sortable2" class="sortable">
        <li class="stagearea" data-addclass="droppedmusic"><!-- Content Here --></li>
        <li class="stagearea" data-addclass="droppednav"><!-- Content Here --></li>
        <li class="stagearea" data-addclass="droppedclimate"><!-- Content Here --></li>
        <!--etc -->
    </ul>
</div>

使用这个 Jquery:

$('#sortable2').on('click','.stagearea', function () {
  var $t=$(this);  //get item that was clicked on
  //read the addclass attribute and add it as a  class
  $t.addClass($t.attr('data-addclass'));
});

Jquery 小更新

$('#sortable2').on('droppable','.stagearea', function () {
  var $t=$(this);  //On droppable rather than on click.
  //read the addclass attribute and add it as a  class
  $t.addClass($t.attr('data-addclass'));
});

【讨论】:

  • 嗯,我明白你在说什么,我喜欢这个概念,但现在我的右栏中似乎没有任何内容。我已经完全删除了我的“if 语句”,因为我看到你在上面的评论中所说的话。正如您可能会说的那样,我对这种类型的编码相当陌生。需要一分钟才能把我的头绕过来。无论如何,我感谢所有的帮助。一旦我得到我的模型的工作版本,我会将它发布在 Github 和 JFiddle 上。我从网络上找到了很多我一直在使用的组件,但还没有一个组件具有我需要的所有功能。
  • @PatrickM 我必须在更改可用之前批准更改...我现在拥有。
  • 我将 on click 更改为 on droppable。
  • 我刚刚将我当前的代码添加到我的 JSFiddle 这里 --> jsfiddle.net/lukeslytalker/xyg92r6c/3
  • 左侧的链接什么都不做(href="")。我想我不明白你想在小提琴中做什么...... droppable 事件,以前的 click 事件,在 sortable2 上,它位于没有内容的右栏中。 ...如果您将其添加到您的 css 中,您将看到我在说什么.. #sortable2 {background-color:red;}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 2013-06-18
  • 2018-04-17
  • 1970-01-01
相关资源
最近更新 更多