JQuery:如何使用类选择器找到最近的元素? [复制]

Posted

技术标签:

【中文标题】JQuery:如何使用类选择器找到最近的元素? [复制]【英文标题】:JQuery: how to find the closest element using the class selector? [duplicate] 【发布时间】:2021-02-05 08:19:33 【问题描述】:

我正在使用 html 和 JQuery(以及 AngularJS)开发应用程序。我是使用 JQuery 的新手并且有一个问题。假设我有这个 HTML 文件:

    <div class="my_class">1</div>
    <p ng-click="my_method()">MY FIRST PARAGRAPH</p>
    <div class="my_class">2</div>
    <p ng-click="my_method()">MY SECOND PARAGRAPH</p>
    <div class="my_class">3</div>
    <p ng-click="my_method()">MY THIRD PARAGRAPH</p>
    <div class="my_class">4</div>
    <p ng-click="my_method()">MY FOURTH PARAGRAPH</p>
    <div class="another_class">something in here..</div>
    <div class="my_class">5</div>

如果在my_method() 方法中我想使用JQuery 代码动态更改与my_class 类关联的SINGLE &lt;div&gt; 元素的样式我不知道该怎么做它。 我知道以下代码:

$(".my_class")

将选择与my_class 类关联的所有元素。但是,例如,如果我点击&lt;p ng-click="my_method()"&gt;MY FOURTH PARAGRAPH&lt;/p&gt;,我该如何准确选择&lt;div class = "my_class"&gt; 4 &lt;/div&gt;(在这种情况下,我感兴趣的 div 最接近我点击的点的顶部)?

【问题讨论】:

你想要 previous div.my_class 元素。您应该可以在 SO 或 jQuery Learning Center 中找到解决方案 【参考方案1】:

你可以将段落元素作为函数的参数传递:

<p ng-click="my_method(this)">MY FOURTH PARAGRAPH</p>

然后在你的函数中你可以找到带有prev()的div

function my_method(element) 
    var myDiv = $(element).prev();

【讨论】:

另外,使用$(element).prev('.my_class')获取前一个元素只有它具有my_class【参考方案2】:

假设你想保持结构不变,试试这个, 在你的 my_method(event) 接受事件。

my_method(event) 
  let paragraphElement = event.target;
  let divElement = $(paragraphElement).prev();

  // now you can change styles on that specific div
  divElement.css( "background-color", "red" )

有很多方法可以做到这一点,因为 Jquery 提供了很多方法来定位元素。 假设您将这些段落包含在 div 元素中,您可以选择 div by

let divElement = $(paragraphElement).parent();

【讨论】:

以上是关于JQuery:如何使用类选择器找到最近的元素? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

JQuery中的选择器

jQuery的选择器

如何使用类选择器覆盖 id 选择器的 jQuery 事件处理程序?

Jquery 选择器找到 DOM 元素,但原生 javascript 选择器返回 undefined

判断jQuery是不是没有找到任何元素

Jquery 之 使用选择器