jquery word warp和remove wrap not working

时间:2011-09-12 08:41:55

标签: javascript jquery html

有些字词来自搜索,我想用div打包它们然后点击一个链接,删除外部wrap,但我的代码不适用于wrap和{{1 }}。有什么问题?

unwrap

5 个答案:

答案 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" />');
    });
});

同时检查this link to jsFiddle

答案 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代码,并将文本放回元素中。

通常,这在服务器端代码中更容易,更健壮。