比较 jQuery 中对象的 InnerHTML

Comparing the InnerHTML of an object in jQuery

本文关键字:InnerHTML 对象 jQuery 比较      更新时间:2023-09-26

我能够获取SharePoint文本框的.html(),该文本框在DOM中仅显示为<div>。 当文本框为空时,该<div>的 InnerHTML 仅显示为 <p></p>

由于此特定文本框并不总是出现(我根据表单上上一个复选框的选定值控制其外观),因此我无法将其设置为必需,因此我通过检查它是否在保存时填写来动态执行此操作。 这意味着查看InnerHTML是否<p></p>或类似<p>asdf<span id="ms-rterangecursor-start" RteNodeId="1"></span><span id="ms-rterangecursor-end"></span></p>,其中asdf是输入的文本(SharePoint将介于两者之间的所有gobbly-gook放入)。

我认为我能做的是像这样检查它,explainField<div>表示为 jQuery 变量,类似于在 http://makandracards.com/makandra/13445-compare-two-jquery-objects-for-equality 所做的:

var $divNode = $('div');
var $pNode = $('p');
var $testNode = $divNode.html($pNode);
if (explainField.is($(testNode))) { 
    // we got <p></p>
    return false;  // go no further
} else {
    return true;  // we're ok
}

但是这种比较不起作用。 当没有文本时,应满足该语句并返回 false。 相反,它返回 true 并认为我们有文本,而实际上我们没有。 我怎样才能使这个比较工作并在找到<p></p>时返回 false ?

因此,请尝试以下操作,这比您尝试的要容易一些。

var $divNode = $('div');
var html = $divNode.html();
if ( $(html).children().length > 0 ) {
    alert ("not empty");
} else {
    alert ("empty");
}

演示