我使用HTML代码如下:
<label style="display:inline;">Information</label>
<a id="eventtrigger" >Click</a>
和jquery如下:
$("#eventtrigger").click(function(event){
//event handling process
});
我想在元素触发器事件附近获得标签的值 这意味着我应该在jquery事件处理过程“中获取值信息”,而不使用任何特定的选择器,如ID或Class 。
答案 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);
}):