【问题标题】:Apply class to element when I click on other element [closed]当我单击其他元素时将类应用于元素[关闭]
【发布时间】:2018-02-08 12:17:03
【问题描述】:

我想写一个函数,但我遇到了一个小问题。

当您单击另一个框时,我有一个应该展开的框,但是有多个框,我只想选择其中一个。我的逻辑告诉我选择$(".class", this) 只选择一个框,但它不起作用,我找不到其他解决方案。

非常感谢您的帮助。为了让您清楚地了解我想要做什么,我只是制作了一个小线框,您可以在其中看到 3 个步骤:

  1. 点击时选择框
  2. 将样式应用于另一个 Box 以扩展它,并且
  3. 以同样的方式,我选择了第二个框,我想从第一个框中选择另一个带有类的元素并对其应用样式(它是一个箭头,将方向从指向顶部更改为指向底部,这表示它已扩展)。

这是一个代码示例,显示我想要做什么:

https://codepen.io/Lueh/pen/eVgNoa

希望你明白我想要做什么。我认为这是一个非常简单的答案,我只是没有想到。顺便说一句,我使用 jQuery 来完成所有这些操作。

// 编辑:我找到了一个解决方案,我在选择我的类和这个之后使用了 .next() jQuery 选择器。看看上面的笔,我在里面包含了我的解决方案。

【问题讨论】:

  • 我编辑了你的问题,所以现在它至少是可读的,而不是一堵墙,但我完全不知道你在问什么,或者你想做什么
  • 我想我最好写一大块文字让所有人都能理解我的意思,看来我错了,所以我试着简短地解释一下:我有一个元素应该是单击时展开并由一个类选择,但我想单击另一个具有类的元素来执行此操作,因为有多个具有相同类的元素我需要在某处添加一个 this 选择器 - 这就是重点,我应该在哪里添加 this 选择器,哪个是正确的语法?我正在尝试 $(".class", this) 但它没有选择任何东西。
  • 这有点清楚:) 你能在问题中添加一个 HTML 示例吗
  • @RoryMcCrossan 是的,当然,我在上面编辑了我的帖子 :)

标签: javascript jquery html css function


【解决方案1】:

您也可以使用 id 代替类

$("#button").click(function(){
  $("#container").addClass("your-class")
})

删除一个类使用$("#container").removeClass("your-class")

或者你可以使用兄弟姐妹。这是一个例子:

HTML

  <div class="container1">
    <button class="button">Button</button>
    <div class="box">
      Content1
    </div>
  </div>

  <div class="container2">
    <button class="button">Button</button>
    <div class="box">
      Content2
    </div>
  </div>

JS

$(".button").click(function(e){
    $(this).siblings(".box").addClass("hidden")
})

还有一个JS Fiddle demo

【讨论】:

  • 当我得到 1000 多个具有唯一 ID 而不是只有一个类的元素时,我需要为此编写一种复杂函数的方法。
  • 我添加了另一个不需要 id 的示例。
  • 非常感谢您的付出,我刚刚找到了一个对我有用的类似解决方案,我使用了相同的代码,但我添加了选择器“.next()”而不是“.siblings( )" :P
  • 当然。如果这对您来说也是一个可行的解决方案,您是否考虑接受答案?谢谢
【解决方案2】:
  • 在课堂上使用on click event(你的盒子)
  • 在单击事件处理程序中(通过类选择所有元素,.each 并忽略单击的一个)
  • .addClass("...") 和或 .removeClass("...")toggleClass

祝你好运。

【讨论】:

  • 所以我有点希望我的函数看起来像这样,但是第一行没有选择任何内容,而不是选择具有类“box”的元素,然后只是我单击的那个,而不是所有具有相同的元素类: $( ".box", this ).click(function() { $( .box__expand ).toggleClass( "box__expand--open" ); });
  • 诀窍是使用类选择器,并在点击事件中忽略当前选定的元素$(this)。如果你仍然有这个问题,我建议你在你的 jQuery 技能上做一些工作。
  • 当我想选择一个带有类的元素时,这对我来说似乎不合逻辑+当我之前什至无法选择它时忽略它......我只是想要与你所说的完全相反我猜.. 是的,我需要提高我的 jQuery 技能,这就是为什么我在这里问一些与 jQuery 相关的东西。 :D
  • 按 id 选择,按类选择,或使用nextchildren、...导航到 DOM 树以查找附近的元素。
猜你喜欢
  • 1970-01-01
  • 2018-06-23
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 2018-10-20
  • 2020-09-30
相关资源
最近更新 更多