JQuery Toggle属性contentEditable =“true”
我在div中使用contenteditable =“true”
每当我点击div时,我想要在这个属性上切换true和false。
例:
$( "#mylabel" ).click(function() { $('#editablediv').attr('contenteditable','false'); });
我试过了:
$( "#mylabel" ).toggle(function() { $('#editablediv').attr('contenteditable','false'); });
但那没用
我怎样才能做到这一点?
试试这种方式:
$( "#mylabel" ).click(function() { var value = $('#editablediv').attr('contenteditable'); if (value == 'false') { $('#editablediv').attr('contenteditable','true'); } else { $('#editablediv').attr('contenteditable','false'); } });
让我发布,希望这有帮助
这比您的最短(可重用性和字符数)短:
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很有趣:)
我发现最短的解决方案:
$('[contenteditable]').attr('contenteditable') === 'true' ? $('[contenteditable]').attr('contenteditable', 'false') : $('[contenteditable]').attr('contenteditable', 'true');
$('#mylabel').click(function() { editable = $('#editablediv').attr('contenteditable'); $('#editablediv').attr('contenteditable', !(editable == 'true')); });
至少在2018年,大多数答案都没有超过Chrome 68中的第一个开/关。这与jQuery或浏览器如何读取此属性的值有关,因为逻辑非常简单。
我发现的代码是
var el = $("{your selector}") (el.attr('contenteditable') ? el.removeAttr('contenteditable') : el.attr('contenteditable', true));
演示小提琴