我正在尝试选择所有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中做同样事情的例子? 感谢。
答案 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”);