比较 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");
}
我能够获取 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>
?
因此,请尝试以下操作,这比您尝试的操作要简单一些。
var $divNode = $('div');
var html = $divNode.html();
if ( $(html).children().length > 0 ) {
alert ("not empty");
} else {
alert ("empty");
}