获取元素中文本的初始和最终位置? - jQuery

时间:2013-10-20 13:55:11

标签: javascript jquery

我正在尝试学习一些jQuery / JS,我遇到了一个我无法解决的问题。我有一个这样的文字:

blablablabla <b data-start="" data-end="">#foo</b> blablabla" 

请注意,本文中我可以有多个标记。


我需要将属性编辑为正确的值,因此我构建了一个方法来执行此操作:

// "str" isn't static, but for pratical purposes, I'm using this as static. 
str = 'blablablabla <b data-start="" data-end="">#foo</b> blablabla'

str.children('b').each(function(i){
      $(this).attr('data-start', '');
      $(this).attr('data-end', '');
})

正如您所看到的,我不知道如何执行上面的代码。我虽然使用:

str.children('b').each(function(i){
          var start = $(this).indexOf('#');
          $(this).attr('data-start', '');
          $(this).attr('data-end', '');
    })

但这会返回索引1,因为我在b标记内得到了文本索引,而不是在所有文本本身内部。那么,我如何解决这个问题并得到“b”的初始位置和“b”的最终位置(不包括标签本身)?

1 个答案:

答案 0 :(得分:2)

嗯..这样的事也许...... jsfiddle link

<span id="test" >
blablablabla <b data-start="" data-end="">#foo</b> blablabla" 
</span>

和jquery ..

var str = $("#test").text();
var strB = $("#test b").text();
$("#test b").attr("data-start", str.indexOf(strB) );
$("#test b").attr("data-end", (str.indexOf(strB) + strB.length-1));
alert($("#test").html())