【问题标题】:How get HTML without remove child (jQuery) [closed]如何在不删除子项(jQuery)的情况下获取 HTML [关闭]
【发布时间】:2018-05-23 22:51:45
【问题描述】:

更改 js-object 存在一些问题。 它具有html结构。 示例:

myObj.html ='<span class="first">la-la-la</span>
            <span class="second">la-la-la</span>';

由于用户操作而导致的结构正在发生变化(添加、删除元素):

$(myObj.html).find('.second').remove()

理论上它必须有所帮助。但我只使用字符串(它不是真正的 DOM 元素)。 myObj.html 不保存更改,并且 .remove() 返回已删除的元素。 我也希望 myObj.html 也改变:

myObj.html ='<span class="first">la-la-la</span>;

遇到这种情况怎么办? (RegExp 不是更好的主意)

【问题讨论】:

  • 不确定您想要什么,但假设您只有一个具有该结构的字符串并且它似乎有一个换行符,您可以尝试类似:myObj.html =myObj.html.split('\n')[0];
  • No-no-no... 可能这一切都是因为我的英语不好 :) Chris 解决了我的问题。

标签: javascript jquery html get


【解决方案1】:

如果你在一个临时元素上调用.html(myObj.html),你可以做任何你想做的事,然后再读回来:

var myObj = {};

myObj.html ='<span class="first">la-la-la</span><span class="second">la-la-la</span>';

$tmp = $("<div>").html(myObj.html);
$tmp.find(".second").remove();
myObj.html = $tmp.html(); 

console.log(myObj);
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 噢!真的行!不是很漂亮,但很有效!克里斯,你是天才!谢谢!
【解决方案2】:

也许您可以使用createElement() 尝试以下操作并删除元素后缀:

let myObj ='<span class="first">la-la-la</span><span class="second">la-la-la</span>';
let myObjHTMLDiv = document.createElement('div');
myObjHTMLDiv.innerHTML = myObj;
$(myObjHTMLDiv).find('.second').remove();
myObj = myObjHTMLDiv.innerHTML;
delete myObjHTMLDiv;
console.log(myObj);
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 2012-11-08
    • 2021-10-12
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多