选择所有contenteditable divs

时间:2015-02-21 08:21:44

标签: javascript jquery contenteditable

我正在尝试选择所有contenteditable div并更改其中的一些功能:

$("div[contenteditable='true']").each(function() {
   console.log($(this).id);
   $(this).onblur="onDivBlur(this)" ;
   $(this).onmouseup="saveSelection()" ;
   $(this).onkeyup="saveSelection(this)" ;
   $(this).onfocus="restoreSelection(this)";

});

我做错了什么? http://jsfiddle.net/mondayguy/oc2ooLto/ 您能否请我提供在纯js中做同样事情的例子? 感谢。

6 个答案:

答案 0 :(得分:1)

使用$(this).attr('id')代替$(this).id

答案 1 :(得分:1)

使用您的示例,这应该有效: -

$("div[contenteditable='true']").each(function(ind,elem) {
   //$(this).onblur = 
    alert($(elem).attr('id'));
   $(elem).onblur="onDivBlur(elem)" ;
   $(elem).onmouseup="saveSelection()" ;
   $(elem).onkeyup="saveSelection(elem)" ;
   $(elem).onfocus="restoreSelection(elem)";

});

答案 2 :(得分:0)

这是你的答案:

   $("div[contenteditable='true']").each(function() {

  alert($(this).attr('id'));
 $(this).onblur="onDivBlur(this)" ;
 $(this).onmouseup="saveSelection()" ;
 $(this).onkeyup="saveSelection(this)" ;
 $(this).onfocus="restoreSelection(this)";

});

答案 3 :(得分:0)

尝试执行类似 onblur 的操作,其他属性(如 id )是附加到元素this的处理程序/属性,但不是jQuery元素{{ 1}}:

$(this)

请注意,我使用jQuery的链接将所有处理程序链接在一起,而不是每次都调用$("div[contenteditable='true']").each(function() { console.log($(this).attr("id")); var self = this; $(this).blur(function(){ onDivBlur(self); }) .mouseup(saveSelection) .keyup(function(){ saveSelection(self); }) .focus(function(){ restoreSelection(self); }); }); 。但是,如果您愿意,可以添加$(this)

编辑: jsFiddle:http://jsfiddle.net/oc2ooLto/4/

答案 4 :(得分:0)

试试这个:

$("div").each(function() {
if($(this).attr("contentEditable") == "true"){
 console.log($(this).attr("id"));
 //REST OF YOUR OTHER CODE
}
});

答案 5 :(得分:0)

$(this)是jQuery对象,引用“each”循环的每次迭代中的匹配元素。因此,它本身没有'id'属性。它是一个jQuery对象。尝试这样来访问元素的id属性:

$(本).attr( “ID”);