如何解析 HTML 并使用 jQuery 替换字符串中的标签?
How to parse HTML & replace Tags in a String using jQuery?
我有一个这样的字符串(为了便于阅读,这里未缩小):
var input='<div id="container" style="max-width: 310px;">
<div class="popupheadermap">
<b>YFC</b>
</div>
<input checked="checked" id="tab-1" name="tab-group" type="radio">
<label for="tab-1">Administration</label>
<input id="tab-2" name="tab-group" type="radio">
<label for="tab-2">Information</label>
<div id="content">
<div id="content-1">
<td>Id</td>
<td class="tablerow">1252</td>
</div>
<div id="content-2">
<td>Type</td>
<td class="tablerow">Gym</td>
</div>
</div>
</div>
<div id="EditContainer">
<button class="editMarker" id="1252"><i aria-hidden="true" class="fa fa-pencil editicon"></i>Edit Location</button>
</div>';
用jQuery我想把EditContainer
的内容替换成div,这样就变成了:
<div id="EditContainer">
<button id="1126_1" class="saveCancel"><i class="fa fa-floppy-o editicon" aria-hidden="true"></i>Save Edit</button>
<button id="1126_2" class="saveCancel"><i class="fa fa-ban editicon" aria-hidden="true"> </i>Cancel Edit</button>
</div>
但是当我使用 find 和 $(input).find('#EditContainer')
时,我得到一个空输出。
如何解析此字符串,并替换 EditContainer
div 的内容?
您遇到的问题是 #EditContainer
元素位于字符串的根级别,因此您需要使用 filter()
,而不是 find()
。试试这个:
var input = '<div id="container" style="max-width: 310px;">' +
'<div class="popupheadermap">' +
'<b>YFC</b>' +
'</div>' +
'<input checked="checked" id="tab-1" name="tab-group" type="radio">' +
'<label for="tab-1">Administration</label>' +
'<input id="tab-2" name="tab-group" type="radio">' +
'<label for="tab-2">Information</label>' +
'<div id="content">' +
'<div id="content-1">' +
'<td>Id</td>' +
'<td class="tablerow">1252</td>' +
'</div>' +
'<div id="content-2">' +
'<td>Type</td>' +
'<td class="tablerow">Gym</td>' +
'</div>' +
'</div>' +
'</div>' +
'<div id="EditContainer">' +
'<button class="editMarker" id="1252"><i aria-hidden="true" class="fa fa-pencil editicon"></i>Edit Location</button>' +
'</div>';
var $input = $(input);
$input.filter('#EditContainer').html('<button id="1126_1" class="saveCancel"><i class="fa fa-floppy-o editicon" aria-hidden="true"></i>Save Edit</button><button id="1126_2" class="saveCancel"><i class="fa fa-ban editicon" aria-hidden="true"> </i>Cancel Edit</button>');
$input.appendTo('body');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
我有一个这样的字符串(为了便于阅读,这里未缩小):
var input='<div id="container" style="max-width: 310px;">
<div class="popupheadermap">
<b>YFC</b>
</div>
<input checked="checked" id="tab-1" name="tab-group" type="radio">
<label for="tab-1">Administration</label>
<input id="tab-2" name="tab-group" type="radio">
<label for="tab-2">Information</label>
<div id="content">
<div id="content-1">
<td>Id</td>
<td class="tablerow">1252</td>
</div>
<div id="content-2">
<td>Type</td>
<td class="tablerow">Gym</td>
</div>
</div>
</div>
<div id="EditContainer">
<button class="editMarker" id="1252"><i aria-hidden="true" class="fa fa-pencil editicon"></i>Edit Location</button>
</div>';
用jQuery我想把EditContainer
的内容替换成div,这样就变成了:
<div id="EditContainer">
<button id="1126_1" class="saveCancel"><i class="fa fa-floppy-o editicon" aria-hidden="true"></i>Save Edit</button>
<button id="1126_2" class="saveCancel"><i class="fa fa-ban editicon" aria-hidden="true"> </i>Cancel Edit</button>
</div>
但是当我使用 find 和 $(input).find('#EditContainer')
时,我得到一个空输出。
如何解析此字符串,并替换 EditContainer
div 的内容?
您遇到的问题是 #EditContainer
元素位于字符串的根级别,因此您需要使用 filter()
,而不是 find()
。试试这个:
var input = '<div id="container" style="max-width: 310px;">' +
'<div class="popupheadermap">' +
'<b>YFC</b>' +
'</div>' +
'<input checked="checked" id="tab-1" name="tab-group" type="radio">' +
'<label for="tab-1">Administration</label>' +
'<input id="tab-2" name="tab-group" type="radio">' +
'<label for="tab-2">Information</label>' +
'<div id="content">' +
'<div id="content-1">' +
'<td>Id</td>' +
'<td class="tablerow">1252</td>' +
'</div>' +
'<div id="content-2">' +
'<td>Type</td>' +
'<td class="tablerow">Gym</td>' +
'</div>' +
'</div>' +
'</div>' +
'<div id="EditContainer">' +
'<button class="editMarker" id="1252"><i aria-hidden="true" class="fa fa-pencil editicon"></i>Edit Location</button>' +
'</div>';
var $input = $(input);
$input.filter('#EditContainer').html('<button id="1126_1" class="saveCancel"><i class="fa fa-floppy-o editicon" aria-hidden="true"></i>Save Edit</button><button id="1126_2" class="saveCancel"><i class="fa fa-ban editicon" aria-hidden="true"> </i>Cancel Edit</button>');
$input.appendTo('body');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>