在contenteditable div中获取子div的id

时间:2013-03-03 19:22:32

标签: javascript jquery html javascript-events contenteditable

<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)"并从已定义的函数中重新启动它,但不起作用

2 个答案:

答案 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"
        );  
    }
});