通过读取和过滤复杂的html字符串将自定义值附加到物理DIV

时间:2012-10-24 02:31:44

标签: jquery html dom

var s = '<h1>heading</h1><p>para</p>';
var $s = $(s).not('h1');
alert($s);

此消息只是说“我[对象对象]”。 其实我想得到HTMLString,说

<p>para</p>

然后我想将该HTMLString插入DIV标签。

$("#_Div_PreviewPane").html($s);

_Div_PreviewPane是DIV元素。

我们将不胜感激。

更新

请让我修改我的代码,实际上我的实际代码如下所示。

var s = 'aaa<br /> '+
'<br />'+
'<div class="_Individual_Product_">'+
'<table style="width: 385px; height: 105px;" cellspacing="0" cellpadding="0">'+
 '   <tbody>'+
 '       <tr>'+
 '           <td> <img class="RotatorImage" id="CMSEditor_thumbRotator_i1_smallImage"     style="width: 100px; height: 100px;" alt="Product image" src="http://localhost:59761/Images/Products/Accommodation2.jpg" /> </td>'+
 '           <td>'+
 '           <table style="width: 285px; height: 100%;" cellspacing="0" cellpadding="0">'+
 '               <tbody>'+
 '                   <tr>'+
 '                       <td>Field Accommodation Master 1</td>'+
 '                       <td> <select class="dynamicDropDownList"     id="ddl_FieldAccommodationMaster1">'+
 '                       <option value="1">Desc 1</option>'+
 '                       <option value="3">Desc 3</option>'+
 '                       <option value="2">Desc 2</option>'+
 '                       </select> </td>'+
 '                   </tr>'+
 '               </tbody>'+
 '           </table>'+
 '           </td>'+
 '       </tr>'+
'    </tbody>'+
'</table>'+
'</div>';
var $s = $(s).not('div._Individual_Product_');
alert($s);
alert($s.html());

$("#_Div_PreviewPane").html($s);

6 个答案:

答案 0 :(得分:2)

你的alert($s)返回一个空字符串,因为在你的代码中jQuery忽略了非元素字符串实际上没有父元素的textNodes,如果你改变了:

var s = 'aaa<br /> '+

为:

var s = '<p>aaa</p><br /> '+

然后,您可以使用not方法,text方法返回aaa字符串。

http://jsfiddle.net/XMkSk/

答案 1 :(得分:2)

您需要先将代码包装到某个对象中(此处我使用div),否则它不会将所有内容转换为一个 jQuery对象。然后删除不需要的对象,并使用.html()返回内容。

// Wrap and create Jquery element
var $s = $('<div>' + s + '</div>');
// Remove unwanted elements
$s.find('._Individual_Product_').remove();
// Return result
alert($s.html());

DEMO

答案 2 :(得分:0)

您的代码很好但提醒文字使用

alert($s.text());

而不是

alert($s);

因为$s是jQuery object,如果您使用console.log($s),则可以看到<p>para</p>

Example

答案 3 :(得分:0)

试试这个:

<div id="mydiv"></div>
<script>
var s = '<h1>heading</h1><p>para</p>';
s = $(s).not('h1');
$('#mydiv').html(s);
</script>

示例:http://jsfiddle.net/66WZY/1/

答案 4 :(得分:0)

尝试将代码修改为:

var s = '<h1>heading</h1><p>para</p>';
var $s = '<p>'+$(s).not('h1').html()+'</p>';
alert($s);

答案 5 :(得分:0)

试试这个:

var s = '<h1>heading</h1><p>para</p>';
var $s = $(s).not('h1');
alert($s.html());

.html()返回html字符串