2013-04-24 90 views
1
<textarea name="message" id="message" class="box_1"></textarea> 
<div class="buttons"> 
    <img src="smileys/smile.gif" title=":)" /> 
</div> 

如何获得textarea的ID被点击图像时?页面上有多个.buttons和表情符号(以及多个textarea)。获取上述元素的id

+0

所以你想获得位于img容器正上方的textarea的id? – 2013-04-24 17:04:59

+0

尝试'$(this).closest(“textarea”)。prop(“id”);' – Timmerz 2013-04-24 17:11:49

+0

'.closest('textarea')'不会工作,因为'img'没有嵌套在它里面。 – 2013-04-24 17:19:21

回答

4
$('div.buttons img').click(function(){ 
    var id = $(this.parentNode).prev('textarea').prop('id');  
    // var id = this.parentNode.previousElementSibling.id;  
}); 

http://jsfiddle.net/z4DWU/1/

1

你通过导航DOM树得到它:

function imgClicked(){ 
    var theElementId = $(this).parent().prev().prop("id"); 
} 
+0

jQuery对象没有'previous'方法。 – undefined 2013-04-24 17:20:11

+0

对不起,我错了,我纠正了我的答案,这应该做到这一点 – Kenneth 2013-04-24 17:22:11

0

如果您使用jQuery 1.7+你可能想用.on()的方法来做到这一点:

$('div.buttons').on('click', 'img', function() { 
    var id = $(this).parent().prev('textarea').prop('id'); 
    // doSomething with the id 
}); 

如果您不是动态加载内容,然而,直接绑定imgclick()没什么大不了的。