2

我使用的 HTML 代码如下:

     <label style="display:inline;">Information</label>
     <a id="eventtrigger" >Click</a>

和jquery如下:

    $("#eventtrigger").click(function(event){
      //event handling process
      });

我想获取元素触发事件附近的标签值。
这意味着我应该在 jquery 事件处理过程中获得值“ Infomation ”,而不使用任何特定的选择器,例如 ID 或 Class

4

3 回答 3

5

您可以使用prev来获取上一个元素。

现场演示

 $("#eventtrigger").click(function(event){
     alert($(this).prev().text());
  });

或专门寻找以前的标签

$("#eventtrigger").click(function(event){
     alert($(this).prev('label').text());
});
于 2012-10-11T15:19:56.323 回答
2

使用.prev()

$("#eventtrigger").click(function(event){
     $(this).prev('label').text();
 });

你也可以使用.siblings()方法

 $("#eventtrigger").click(function(event){
     alert($(this).siblings('label').text());
  });​

检查小提琴

于 2012-10-11T15:21:20.737 回答
1

如果您的 HTML 总是这样,那么请使用 @Adil 的方法。但是,如果您需要它更加动态,请使用.siblings()并简单地抓住.first( )一个,这将是“最接近的”。

例如,您可以考虑以下内容:

//  The following will grab the closest label to any a tag clicked on
$("a").on("click", function(e) {
    var closest = $(this).siblings("label").first();
    console.log(closest);
}):

但是,我认为如果它的一侧都有一个标签,我认为这将抓住第一个标签如果这是不可取的并且您之前想要第一个标签(例如,您可能在 a 标签之前有多个标签和 p 标签) , 你需要.prev()之外的东西,因为.prev()只会在 a 标签之前抓取 FIRST 元素。在这种情况下,使用.prevAll()结合.first( )来获取 a 标签之前提到的第一个标签。

像这样:

$("a").on("click", function(e) {
    var closest = $(this).prevAll("label").first();
    console.log(closest);
}):

当然,对于相反的情况,您可以使用.nextAll()

$("a").on("click", function(e) {
    var closest = $(this).nextAll("label").first();
    console.log(closest);
}):
于 2012-10-11T15:39:48.500 回答