JQuery Toggle属性contentEditable =" true"

时间:2014-04-19 14:00:00

标签: javascript jquery

我在div中使用contenteditable =“true”

每次点击div时,我想要在此属性上切换true和false。

示例:

$( "#mylabel" ).click(function() {
    $('#editablediv').attr('contenteditable','false');
});

我试过了:

$( "#mylabel" ).toggle(function() {
    $('#editablediv').attr('contenteditable','false');
});

但这不起作用

我该怎么做?

5 个答案:

答案 0 :(得分:6)

尝试这种方式:

$( "#mylabel" ).click(function() {
    var value = $('#editablediv').attr('contenteditable');

    if (value == 'false') {
        $('#editablediv').attr('contenteditable','true');
    }
    else {
        $('#editablediv').attr('contenteditable','false');
    }
});

让我发布,希望这有帮助

答案 1 :(得分:2)

这比您的最短(可重用性和字符数)短:

function editTheElement() {
    var a = "contenteditable";
    $(this).attr(a) === 'true' ? $(this).attr(a,'false') : $(this).attr(a, 'true');
}

或仍然

function editTheElement(e) {
    var a = "contenteditable";
    e.attr(a) === 'true' ? e.attr(a,'false') : e.attr(a, 'true');
}

function editTheElement(e) {
    var a = 'contenteditable';
    var v= e.attr(a);
    e.attr(a,!v);
}

function editTheElement(e) {
    var a = 'contenteditable';
    e.attr(a,!e.attr(a));
}

function editTheElement(e) {
    e.attr('contenteditable',!e.attr('contenteditable'));
}

JS很有趣:)

答案 2 :(得分:1)

至少在2018年,大多数这些答案都无法在Chrome 68中首次打开/关闭后起作用。这与jQuery或浏览器如何读取此属性的值有关,因为逻辑非常简单。 / p>

我发现可以使用的代码是

var el = $("{your selector}")
(el.attr('contenteditable') ?
  el.removeAttr('contenteditable') :
  el.attr('contenteditable', true));

Demo Fiddle

答案 3 :(得分:0)

我发现最短的解决方案:

$('[contenteditable]').attr('contenteditable') === 'true' ? 
$('[contenteditable]').attr('contenteditable', 'false') : 
$('[contenteditable]').attr('contenteditable', 'true');

答案 4 :(得分:0)

$('#mylabel').click(function() {
    editable = $('#editablediv').attr('contenteditable');
    $('#editablediv').attr('contenteditable', !(editable == 'true'));
});