jquery添加元素,然后选择(用于覆盖)添加的文本
jquery add element then select (for overwriting) added text
我有一段简单的代码,用于向列表中添加新的项目符号。新项目符号具有"您的新项目符号"的通用文本,然后用户对其进行编辑。是否有任何方法可以在添加新的项目符号后,选择通用文本以进行覆盖。
我的代码是这样的。。。。
$(document).on("click", "#addNewBullet", function(){
$('<li class="bullet editable" contentEditable="true">Your new bullet</li>').insertBefore('#addNewBullet')
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="bulletPoints" id="bullets">
<li class="bullet" contenteditable="true">Bullet1</li>
<li class="bullet" contenteditable="true">Bullet2</li>
<li class="bullet" contenteditable="true">Bullet3</li>
<div id="addNewBullet">+ Add</div>
</ul>
感谢
使用focus
,我添加了函数selectText
来选择所有文本,因此很容易编辑文本。
jQuery.fn.selectText = function(){
var doc = document;
var element = this[0];
console.log(this, element);
if (doc.body.createTextRange) {
var range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
};
$(document).on("click", "#addNewBullet", function() {
$('<li class="bullet editable" contentEditable="true">Your new bullet</li>').insertBefore('#addNewBullet').focus().selectText();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="bulletPoints" id="bullets">
<li class="bullet" contenteditable="true">Bullet1</li>
<li class="bullet" contenteditable="true">Bullet2</li>
<li class="bullet" contenteditable="true">Bullet3</li>
<div id="addNewBullet">+ Add</div>
</ul>
您可以使用.focus()
,然后选择所有文本:
$(document).on("click", "#addNewBullet", function() {
$('<li class="bullet editable" contentEditable="true">Your new bullet</li>').insertBefore('#addNewBullet').focus();
document.execCommand('selectAll', false, null);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="bulletPoints" id="bullets">
<li class="bullet" contenteditable="true">Bullet1</li>
<li class="bullet" contenteditable="true">Bullet2</li>
<li class="bullet" contenteditable="true">Bullet3</li>
<div id="addNewBullet">+ Add</div>
</ul>
相关文章:
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- 如何将可调整大小、可拖动的覆盖添加到网页中
- 如何在视频标签中添加按钮覆盖
- 如何在不覆盖的情况下添加同一JPanel类的不同实例
- 将角度控制器添加到因果报应覆盖(伊斯坦布尔)代码覆盖预处理器
- 将覆盖添加到除元素之外的主体
- 在覆盖和关闭按钮或链接中为img添加边框
- 如何覆盖Asp.Net UpdatePanel(动态)添加的Javascript函数
- javascript原生原型:扩展、添加和覆盖方法
- 使用 CSS 覆盖通过 JS 添加的内联样式
- Internet Explorer 在 jQuery 鼠标向下处理程序中添加覆盖层后泄漏单击事件
- 在覆盖层上添加事件侦听器
- 添加事件侦听器而不覆盖
- jQuery:在调整窗口大小时添加和删除元素,但始终覆盖窗口
- 如何覆盖 Backbone.sync,以便在末尾添加 apikey 和用户名
- 我想克隆一个 javascript 类. 将方法添加到克隆的属性中,而不实际覆盖现有方法
- 添加但不覆盖文本
- 高光幻灯片:如何在画廊后面添加覆盖,使所有页面内容变暗
- 悬停在井内时向引导程序缩略图添加覆盖