【问题标题】:Toggle SPAN Class along with this div toggle与此 div 一起切换 SPAN 类
【发布时间】:2026-01-15 05:45:01
【问题描述】:

我已经尝试了几种不同的方法,但似乎无法弄清楚如何将跨度的类从“die2”切换到“die3”以及将 div 的显示样式从“块”切换到“无”。有人有任何解决方案吗? (基本上,当页面加载时,此广告将显示,当您单击红色 x (die2) 时,添加会消失,红色 x 应更改为绿色复选框 (die3)。这是适用于 div 切换的代码我正在使用。

<div id="mydiv" style="display:block">
<img src='http://www.test.com/mypopad.png' alt='' />
</div>

<a href="javascript:;" onmousedown="if(document.getElementById('mydiv').style.display == 'block'){ document.getElementById('mydiv').style.display = 'none'; }else{ document.getElementById('mydiv').style.display = 'block'; }"><span id="myspan" class="die2"><!-- --></span></a> 

谢谢大家,我想我现在开始了......我在样式表中添加了另一个类,然后只是重用了 JKing 回答的内容。我可以让 divHide 工作,但它只会添加类并删除类。所以我决定只添加一个 divShow 并为 span 使用相同的代码。多谢你们!

<div id="mydiv" class="divShow">
<img src='http://www.northpointemobilehomesales.com/wp-content/gallery/support-images/big-daves-sidebar-ad_03.png' alt='' />
</div>

<a href="javascript:;" onmousedown="document.getElementById('mydiv').classList.toggle('divHide');document.getElementById('mydiv').classList.toggle('divShow');document.getElementById('myspan').classList.toggle('die2');document.getElementById('myspan').classList.toggle('die3');">
<span id="myspan" class="die2"><!-- --></span>
</a>

由于上述在 IE 中不起作用,我使用了 Sven 的代码并让它起作用,我们在调用 #mydiv 时缺少 #...

<script type="text/javascript">
  $("document").ready(function(){
    $("#myspan").click(function(){
      $(this).toggleClass("die2").toggleClass("die3");
      $("#mydiv").toggle();
   });
  });
</script>

<div id="mydiv" class="">
<img src='http://www.northpointemobilehomesales.com/wp-content/gallery/support-images/big-daves-sidebar-ad_03.png' alt='' />
</div>

<a href="#">
<span id="myspan" class="die2"><!-- --></span>
</a>

我将使用此代码一段时间,看看它是否适合我的需要。 :) 谢谢大家!

【问题讨论】:

  • 查看jQuery。这是一个可以为您轻松完成这些事情的框架。 (Tutorials)

标签: javascript css toggle


【解决方案1】:
<script type="text/javascript">
  $("document").ready(function(){
    $("#myspan").click(function(){
      $(this).toggleClass("die2").toggleClass("die3");
      $("#mydiv").toggle();
    });
  });
</script>

就是这样

【讨论】:

  • 我假设我会这样实现: 如果是这样,它和其他代码一样,它将 die2 切换到 die3 但也不会隐藏或折叠 div。它也不会隐藏类名我在firebug中查看。顺便感谢大家的快速回复。
  • 您必须在第一个 jquery 和插入此脚本后在标题中链接,以获得此解决方案。你不需要html中的事件,因为你直接在脚本中将click事件绑定到元素
  • 好吧,我明白了,但它仍然只会将 die2 更改为 die3,但不会打开和关闭 div。没关系,切换部分有错误,应该是#mydiv ... lol :) 它似乎也在 IE 中工作。
【解决方案2】:

您不需要 jQuery,尽管您可能会喜欢它。您需要做的就是使用元素的classList 对象。 你可以用classList做很多很酷的事情:

el.classList.add("myClassName")      //adds class (does nothing if el already has that class)
el.classList.remove("myClassName")   //removes class (does nothing if el doesn't have that class)
el.classList.toggle("myClassName")   //toggles class 

el.classList.contains("myClassName") //returns true if el has that class, false if not.

这是您的代码的修改版本,作为您可以做什么的示例 - 虽然我不确定这是否正是您想要做的,但它应该为您指明正确的方向。

<div id="mydiv" class="divHide">
    <img src='http://www.test.com/mypopad.png' alt='' />
</div>

<a href="javascript:;" onmousedown="document.getElementById('mydiv').classList.toggle('divHide');document.getElementById('myspan').classList.toggle('die2');document.getElementById('myspan').classList.toggle('die3');">
    <span id="myspan" class="die2"><!-- --></span>
</a>

(我也在切换 div 上的一个类以显示/隐藏它,而不是你的 if/else 检查样式属性。)

【讨论】:

  • 这几乎可以工作并且对我来说很有意义,但是 divHide 有问题或者我很困惑。当我单击链接时,它确实将跨度的样式从 (die2) 更改为 (die3),但 divHide 仅将 html 从
    更改为
    。它隐藏了类,但没有隐藏 div。
  • 请注意 element.classList 在任何版本的 IE 中都不受支持(根据 Mozilla 开发者网络,尽管他们提供了适用于 IE8(可能是更高版本)以及其他旧版本的 shim浏览器。
  • 你需要为 divHide 类添加一个 CSS 规则: div.divHide { display:none; }
  • David Thomas 提出了一个很好的观点,那就是有些浏览器缺乏对 classList 的原生支持。要解决这个问题,只需使用一个 polyfill:github.com/eligrey/classList.js(比 JQuery 轻得多,如果您不需要 JQuery 的任何其他功能。)
  • 如果您包含我在之前的评论中链接的那个 js 文件,它将。同样,如果您只需要切换类,则该 polyfill 比 Jquery 之类的轻量级得多。
【解决方案3】:

我推荐 jQuery:

mydiv.toggle() or mydiv.removeClass("die2").addClass("die3")

【讨论】:

  • 对不起,我不知道如何将其集成到 html 中以进行测试。该网站确实使用 jquery,它是一个带有熊猫主题的 wordpress 网站...
  • 如果您告诉我如何集成 jquery 示例,我将对其进行测试并将其发布在问题中,以便其他人可以从中受益。谢谢托德尔。 :)
猜你喜欢
相关资源
最近更新 更多
热门标签