有些字词来自搜索,我想用div
打包它们然后点击一个链接,删除外部wrap
,但我的代码不适用于wrap
和{{1 }}。有什么问题?
unwrap
答案 0 :(得分:2)
单词不能是字符串换行仅适用于jquery对象或dom元素。
尝试这样的事情:
<script>
$(document).ready(function() {
var words = 'this is your search string';
words = '<div id="words">'+words+'</div>'; // wrap it, basically creating the string
$('body').append(words);
$('#click').click(function(){
$('#words').replaceWith($('#words').get(0).childNodes); // get the words outsde of it again, unwrap only works on the inner element.
});
});
</script>
<body>
<a id="click">remove me</a>
</body>
答案 1 :(得分:2)
第1点 - 你可以只包装DOM元素,如上所述
第2点 - 在你换行之前,你必须将它添加到DOM,否则将无法访问 添加'div'
第3点 - 如果你写两次$(单词)和$(单词),这些不是同一个对象!
您应该执行以下操作:
$(document).ready(function() {
var words = $('<span></span>').text('words words words');
words.wrap('<div id="words"></div>');
$('body').append(words);
$('#click').click(function(){
words.unwrap('<div id="words" />');
});
});
答案 2 :(得分:0)
words
必须是选择器,而不是字符串
答案 3 :(得分:0)
在将元素添加到文档之前包装元素,并且单词必须是DOM元素。
您可以尝试直接在$('body').append()
上使用<div id="words">your_php_result</div>
。
答案 4 :(得分:0)
这是你的选择器不起作用。您最终会执行$('this is a text')
,它将在以下结构中搜索text
元素:
<this>
<is>
<a>
<text></text>
</a>
</is>
</this>
当然没有这样的元素,所以结果是一个空的jQuery对象。
如果您想在文字中包含文字,则必须循环浏览网页上的所有相关元素,使用.text()
或.html()
获取内容,在文本中查找字词并替换它们使用包装单词的HTML代码,并将文本放回元素中。
通常,这在服务器端代码中更容易,更健壮。