我正在尝试学习一些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”的最终位置(不包括标签本身)?
答案 0 :(得分:2)
<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())