Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以对存储在HTML字符串中的信息使用addClass吗?_Javascript_Jquery - Fatal编程技术网

Javascript 我可以对存储在HTML字符串中的信息使用addClass吗?

Javascript 我可以对存储在HTML字符串中的信息使用addClass吗?,javascript,jquery,Javascript,Jquery,我有一个字符串,例如看起来像这样 var html = '<div class="templatemo_post_text grid-85"> <div id="wmd-preview"><h2>Skriv något!</h2> <p>Lorem ipsum</p></div> <div class="templatemo_post_footer"> <div class="templatem

我有一个字符串,例如看起来像这样

var html = '<div class="templatemo_post_text grid-85">
<div id="wmd-preview"><h2>Skriv något!</h2>
<p>Lorem ipsum</p></div>
<div class="templatemo_post_footer">
<div class="templatemo_post_on">
<span class="orange">Skrivet den</span> 3 Mar 2013</div>
<div class="templatemo_post_comment">
<a href="#">Inlägg nummer </a>
</div></div></div>';
我能否以某种方式使用.addClass将类添加到id=wmd预览中? 实际上,我的问题是所有Java脚本都要修改现有变量。我想做的另一件事是用新标签替换整个标签


谢谢。

您可以将HTML转换为DOM元素:

var element = $(html);
然后选择所需的div:

var div = element.find('#wmd-preview');
然后添加类:

div.addClass('new-class');
编辑

要将修改后的DOM元素转换回HTML字符串,可以使用:

注意,这给出了元素的内部HTML,因此缺少封闭的div。您可以通过将其添加到另一个div来解决此问题

html = $('<div></div>').append(element).html();

这是你想要做的

var html = '<div class="templatemo_post_text grid-85"><div id="wmd-preview"><h2>Skriv något!</h2><p>Lorem ipsum</p></div><div class="templatemo_post_footer"><div class="templatemo_post_on"><span class="orange">Skrivet den</span> 3 Mar 2013</div><div class="templatemo_post_comment"><a href="#">Inlägg nummer </a></div></div></div>';

$(html).find('.orange').addClass('someclass')

谢谢你的评论,但这并没有解决我的问题,原因是我的意见不好。 我是通过使用innerHTML来获取html的,但这与解决方案不兼容

我把我的代码留在这里给任何需要它的人。代码是获取我的DIV的一种方式,当ajax获得成功时,它将更改并删除id wmd预览

mydiv = document.createElement('div')
mydiv.className = 'templatemo_post_area addbottom grid-parent';
mydiv.innerHTML = document.getElementById('preview').innerHTML;
$.ajax({
    type: "POST",
    dataType: 'json',
    url: "/pages/posts_ajax.php",
    data: {
        data : text,
        time : timepost
    },
    success: function(response) {
        $(mydiv).find('#wmd-preview').removeAttr('id');
        $(mydiv).find('#postnr').text('Inlägg nummer '+response.id);
        $(mydiv).insertAfter('div#post_area');
    }
});

这个解决方案的问题是html变量将被破坏,无法正确发布?我需要更改html变量,以便发布新版本。@Sun\u Blood,我已经用一些代码编辑了我的答案,这些代码可能会有所帮助。这看起来像我正在寻找的,但我无法让它工作。我的代码$html.finddivwmd preview.addClass'templatemo_post_text grid-85'$html.insertAfter'divpost_area';
mydiv = document.createElement('div')
mydiv.className = 'templatemo_post_area addbottom grid-parent';
mydiv.innerHTML = document.getElementById('preview').innerHTML;
$.ajax({
    type: "POST",
    dataType: 'json',
    url: "/pages/posts_ajax.php",
    data: {
        data : text,
        time : timepost
    },
    success: function(response) {
        $(mydiv).find('#wmd-preview').removeAttr('id');
        $(mydiv).find('#postnr').text('Inlägg nummer '+response.id);
        $(mydiv).insertAfter('div#post_area');
    }
});