比较 jQuery 中对象的 InnerHTML

Comparing the InnerHTML of an object in jQuery

我能够获取 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
}

但是这个比较不起作用。当没有文本时,语句应该满足并且return false。相反,它 return 是真的,并认为我们有文本,而实际上我们没有。如果找到 <p></p>?

,我怎样才能使这个比较工作并且 return 为假

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

var $divNode = $('div');
var html = $divNode.html();

if ( $(html).children().length > 0 ) {
    alert ("not empty");
} else {
    alert ("empty");
}

Demo