如何获取触发事件的元素附近的Html元素的值

时间:2012-10-11 15:18:57

标签: jquery html5 events

我使用HTML代码如下:

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

和jquery如下:

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

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

3 个答案:

答案 0 :(得分:5)

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

<强> Live Demo

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

或专门寻找以前的标签

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

答案 1 :(得分:2)

使用.prev()

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

您还可以使用.siblings()方法

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

<强> Check FIDDLE

答案 2 :(得分: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);
}):

然而,我认为如果在每个一侧有标签,那么它将会在之后获取第一个,如果这是不合需要的话并且你想要先前的第一个(例如,你可能在标签之前有多个标签和p标签),你需要.prev()以外的东西,因为.prev()只会在a标签之前获取FIRST元素。在这种情况下,请使用.prevAll().first()结合使用,以获取在标记之前提到的第一个标签。

因此:

$("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);
}):