<div class="pad" id="test" contenteditable="true" spellcheck="false">
<div id="a0" class="fif" > text0</div>
<div id="a1" class="fif" >text1</div>
<div id="a2" class="fif" >text2</div>
</div>
在上面的代码中,有一个 contenteditable div ,里面有一些子div。我需要一个jquery来返回我输入的子div的 id 。例如如果我正在编辑 text1 ,它应该给我(返回)“a1”。
如果我使用
,它可以正常工作var clicked;
$('#test').click(function(event){
clicked = $(event.target);
alert(clicked.attr('id'));
});`
如此处所示
http://jsfiddle.net/bernie1227/cK69Q/ (即点击它会返回id =“a1”)但是如果我使用
它就不会以类似的方式工作var clicked;
$('#test').keypress(function(event){
clicked = $(event.target);
alert(clicked.attr('id'));
});
如此处所示http://jsfiddle.net/hari_OM/bLgkv/ 即。输入时会返回“id = test”而不是“id = a1”
我尝试使用event.target.id
和$(this).attr("id")
,但他们返回 id =“test”而不是 id =“a1”,但我需要获得“a1”。我还尝试在子div中注入onkeypress="funcname(this.id)"
并从已定义的函数中重新启动它,但不起作用。
答案 0 :(得分:0)
我编写了一个依赖于使用event.target
跟踪事件目标的解决方案:
http://jsfiddle.net/bernie1227/cK69Q/
答案 1 :(得分:0)
曾经调查过这个? DOMCharacterDataModified
$(document).on('DOMCharacterDataModified', function( event ) {
if($(event.target).parent().attr('id') === 'parentid') {
console.log(
'target',$(event.target),"\r"
);
}
});