【问题标题】:Applying the same changes for one div to another div [closed]将一个 div 的相同更改应用到另一个 div [关闭]
【发布时间】:2015-01-23 16:07:05
【问题描述】:

以下代码对.main 内部的class1 及其 (class1) 内容进行了一些更改。

$('.main').on('click','.class1',function(){
   //some work with $(this)
});

另外,.main 内部还有一个div.class2,其结构与div.class1 的结构相似。

问题是: 通过单击.class1 将上述代码对 class1 发生的所有更改也应用到 class2 的最简单方法是什么?

div.class1 克隆到div.class2 不是可行的方法,因为内容略有不同。只有上面正在执行的代码应该同时应用于class1class2

重要的是上面的代码包含.closest()这样的$(this).closest('.bar')方法。

【问题讨论】:

  • 在两个元素上放置一个公共类并将其放入选择器中。
  • closest 将始终只返回 1 个项目。如果您必须使用它,请尝试找到包装 class1 和 class2 的最近父级并将样式应用于子级。
  • 您能否向我们展示您的 html 的确切结构,以及 closest() 的位置?点击任一 div 元素时,您真正想做什么?
  • @Jamiec,我真的很抱歉我不能分享整个代码。问题是是否有可能用于任何代码。添加一个通用类是个好主意,但是,它不起作用。将 $this 替换为 class1、class2 之类的操作。可能没有更简单的方法来执行此代码,然后查找这是来自 class1 还是来自 class2,然后切换到另一个类并可能再次执行整个代码。
  • 你是否希望每次有人点击 class1 时你的更改也会发生在 class2 上?在这种情况下,没有人接触 class2 (或)您是否希望在分别单击两者时发生相同的更改?

标签: javascript jquery html css this


【解决方案1】:

您可以使用逗号组合多个选择器:

$('.main').on('click','.class1, .class2',function(){
   //some work with $(this)
});

但我想建议您为它们使用一个通用类。

$('.main').on('click','.common_class',function(){
   //some work with $(this)
});

您可以在 html 中使用多个类,方法是在它们之间放置一个空格。

例如:

<div class="class1 common_class"></div>
<div class="class2 common_class"></div>

【讨论】:

  • 对不起,因为代码包含最接近的方法,如 $(this).closest('.bar')。我的错,我应该在问题中提到它。
  • @Haradzieniec - 如果您使用.closest(),任何一个选项都应该仍然有效。处理程序内部$(this) 指的是实际点击的那个
  • @Jamiec,它只会找到一个最接近的(),并将代码完全应用于 class1、class2 之一,但不能同时应用于两者。
猜你喜欢
  • 2013-05-27
  • 1970-01-01
  • 2018-04-28
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 2014-07-21
相关资源
最近更新 更多