我试图检测我点击的元素是否为contentEditable。我试过这个:
$( "#thediv" ).hide();
$(this).click(function() {
if ($(this).is("[contenteditable='true']")) {
return true;
$( "#thediv" ).show();
alert('hi');
} else if ($(this).is("[contenteditable='false']")) {
return false;
$( "#thediv" ).hide();
alert('hi');
}
});
和
$( "#thediv" ).hide();
$(this).click(function() {
if ($(this).attr("contentEditable") == true) {
$( "#thediv" ).show();
alert('yes');
} else {
$( "#thediv" ).hide();
alert('no');
}
});
我怎样才能让它发挥作用?
这里是fiddle
答案 0 :(得分:9)
contenteditable
属性将告诉您元素是否具有为contenteditable设置的显式值。但是,可编辑性是继承的,因此下面的HTML中的<span>
等元素是可编辑的,但没有contenteditable
属性值:
<div contenteditable="true"><span>Some editable text</span></div>
您需要的是isContentEditable
property,它完全符合您的要求:
$(this).click(function() {
if (this.isContentEditable) {
// Do stuff
}
});
答案 1 :(得分:3)
这未定义。雅去吧 http://jsfiddle.net/dqEE2/2/
$( "#hello" ).hide();
$(function() {
$("div").click(function() {
if ($(this).attr("contentEditable") == "true") {
$( "#hello" ).show();
alert("yes");
} else {
alert("no");
$( "#hello" ).hide();
}
});
答案 2 :(得分:1)
你尝试过使用jQuery的attr吗? http://api.jquery.com/attr/ 这可能有用
if ($(this).attr("contentEditable") == "true") {
编辑:以下工作正常:
if ($(this).is("[contentEditable='true']")) {
afro360的问题是不同的
答案 3 :(得分:0)
使用 element.isContentEditable 将是最简单的解决方案。
$(".edit").on("click", function() {
var status = document.getElementById("theContent").isContentEditable;
$("#theContent").prop("contenteditable", !status);
});