jquery - 切换内容可编辑属性

标签 jquery contenteditable

为什么行 obj.attr(b, 'false').blur(); 不起作用?这里出了什么问题?

$('#btnren').on('click', function() {
  let obj = $('#cptitlea');
  let b = 'contenteditable';
  if (obj.attr(b, 'false')) {
    obj.attr(b, 'true').focus(); // this works
  } else {
    obj.attr(b, 'false').blur(); // doesn't work
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='cptitlea'>323</div>
<br>
<button id='btnren'>CLICK</button>

最佳答案

问题是因为您在 if 语句中使用了 attr()setter。这意味着您的 if 实际上是在说“if(jQuery 对象存在)”,它始终为 true

要解决此问题,请使用 attr()getter 来检索值并在 if 语句中使用它。请注意,您可以通过向 attr() 提供一个函数来简化逻辑,该函数根据当前值返回要设置的新值。试试这个:

$('#btnren').on('click', function() {
  let $el = $('#cptitlea');
  let b = 'contenteditable';
  
  $el.attr(b, function(i, v) {
    return v === 'true' ? false : true;
  }).focus();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='cptitlea'>323</div>
<br>
<button id='btnren'>CLICK</button>

关于jquery - 切换内容可编辑属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296161/

相关文章:

php - 如何使用 jQuery 检查用户输入中所有图像标签的来源

javascript - 删除最后一个字符时光标返回到 contenteditable Div 的开头

javascript - 将 <div> 样式及其内容保存在 contenteditable div 中

javascript - 如何为 Telerik MVC [JQuery] 事件处理程序发送附加参数

javascript - 在 jQuery 中使用过滤器

javascript - 更改时的 JQuery 复选框

javascript - 如何使用 JavaScript 或 jQuery 解析 "dd/mm/yyyy"或 "dd-mm-yyyy"或 "dd-mmm-yyyy"格式的日期字符串

javascript - 如何在 contenteditable 中将文本分成单独的页面(如 Google 文档)?

php - 如何使用 php 在 td 中发送 contenteditable 值

javascript - Jquery一次循环并绑定(bind)10条记录