我正在将 Web 用户控件编译为 HTML,它返回 HTML,其中 View 状态包含在类为 aspNetHidden
的 DIV 中。但这些 DIV 破坏了我的页面设计,我尝试使用以下 JQuery 代码删除它们:
var c ='<div class="aspNetHidden"><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="fEButj6b8aiQphz0BrJAJplpNUO1v+7wkyuy4bE4UQ9jy524kYG+mAVtVvxdfpWnKqmCQfVCiHrx21/GiUZe9w==" /></div><div>Code from web user control</div><div class="aspNetHidden"><input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="C21772F6" /></div>';
var $c = $(c);
$c.find('.aspNetHidden').remove();
console.log($c.html());
但是这段代码返回的是:
<input name="__VIEWSTATE" id="__VIEWSTATE" value="fEButj6b8aiQphz0BrJAJplpNUO1v+7wkyuy4bE4UQ9jy524kYG+mAVtVvxdfpWnKqmCQfVCiHrx21/GiUZe9w==" type="hidden">
而不是这个:
<div>Code from web user control</div>
请告诉我出了什么问题?如果可能的话,请也提供一个服务器端代码。
最佳答案
问题在var $c = $(c);
行中,如果您记录 $c
的初始值
var $c = $(c);
console.log($c.html())
你会看到这个问题。只需要第一个 aspNetHidden
如$c
其他的则被忽略。
问题是,每当你用 $()
包装 html 字符串时,它与父对象一起创建一个对象。以及您的输入c
只有 3 <div>s
没有 parent ,所以只需要第一个 div
作为输入并创建一个对象。
最终代码:
试试这个,
var $c = $('<div/>',{html:c});
//or var $c = $('<div'+c+'</div>');
$c.find('.aspNetHidden').remove()
<强> Updated Fiddle
关于javascript - 无法从具有 'aspNetHidden' CSS 类的字符串中删除 HTML 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30288816/