Jquery如果contenteditable = true事件

时间:2014-05-29 21:11:47

标签: jquery contenteditable

我试图检测我点击的元素是否为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

4 个答案:

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