使用Jquery结束元素
Using Jquery to end an element
我有以下使用rangy的代码,它允许用户将类应用于所选文本:
<div><span>This is some text that users can select</span></div>
当用户选择文本并应用类时,代码将变为:
<div><span>This is some <span class='someclass'>text</span> users can select</span</div>
我需要一种方法来结束之前的跨度标签,然后在之后创建一个新的标签
<div><span>This is some </span><span class='someclass'>text</span><span> users can select</span</div>
瘦长的图书馆没有一个内置的方式来做到这一点。我尝试使用:
$('.someclass').before("</span>")
和
$('.someclass').after("<span>")
但这并没有奏效。
有什么想法吗?
最快的方法是将处理span类插入的代码更改为:
选择前插入
</span><span class='someclass'>
选择后
</span><span>
播放范围和周边内容:
var spanparent = $('div > span').get(0);
var range = document.createRange();
// create <span>This is some </span>
var startSpan = document.createElement("span");
range.setStart(spanparent,0);
range.setEnd(spanparent,1);
range.surroundContents(startSpan);
// create <span> users can select</span>
var endSpan = document.createElement("span");
range.setStart(spanparent,2);
range.setEnd(spanparent,3);
range.surroundContents(endSpan);
//result:
//<div>
// <span>
// <span>This is some </span>
// <span class="someclass">text</span>
// <span> users can select</span>
// </span>
//</div>
// remove the outer span
var contents = $(spanparent).html();
$(spanparent).replaceWith(contents);
像这样的东西会做
$('.someclass').parent().each(function(){
$(this).contents().each(function(){
if(this.nodeType == 3){
$(this).wrap('<span />')
}
});
$(this).contents().unwrap()
})
演示:Fiddle
希望这能帮助
给div一个id,比如myDiv。
$(function(){
var selectedText = ""; // Store the selected text in this variable
var indexOfText = $("#myDiv").text().indexOf(selectedText);
var originalString = $("#myDiv").text();
var part1 = originalString.substring(0, indexOfText);
var part2 = originalString.substring(indexOfText + selectedText.length, originalString.length - 1);
var newString = "<span>" + part1 + "</span><span>" + selectedText + "</span><span>" + part2 + "</span>";
$("#myDiv").empty();
$("#myDiv").html(newString);
});
相关文章:
- 伪元素上的过渡结束未在 Edge 上触发
- 根据DOM,HTML元素的开始和结束标记之间的内容被称为属性.这个房产的名字是什么
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- 在触摸结束事件期间,Find元素手指处于打开状态
- 将 DOM 元素替换为仅开始标记(或结束标记)
- 如何在发生多个过渡时检测“特定”元素上的 CSS 过渡的结束
- 等待多个元素的动画结束
- 如果没有jquery,我需要确定鼠标是否在一个元素上,而不是确定它何时结束(以防它没有移动来触发onmouseover)
- 如果有多个元素被动画化,如何知道jquery效果何时结束
- fullcalendar中删除的外部元素的结束时间没有'拖动到新位置之前不应用
- 从非结束节点HTML元素(如LI元素)获取文本值的Javascript
- 如何使滑块在元素结束时继续循环(如何包裹滑块)
- '已结束'HTML5事件未绑定到绑定后创建的元素上
- 如何在FullCalendar中使用外部元素获取drop和eventDrop的结束时间
- 使用父元素中的javascript计算用户选择的开始和结束位置
- 使用Jquery结束元素
- 如何确定是否在父元素的开始或结束存在文本?HTML DOM &JavaScript
- 如何在删除时计算元素,这样我就不会以空()结束
- 在特定的结束标记旁边查找HTML元素
- 在 html5 音频元素结束播放前 5 秒执行 Javascript 代码