目前我正在尝试比较两个变量,newhtml
和 oldhtml
.
我得到旧的 html 使用:
var oldhtml = $('#pop').html();
我使用以下方法获取新的 html:
var newhtml = ("<%= escape_javascript render(:file => 'shared/_content') %>");
然后我尝试使用以下方法比较它们:
if(newhtml == oldhtml)
{
//is never called
$('#pop').hide();
}
else
{
//is always called
$('#pop').html(newhtml);
}
但它不起作用。在这种情况下 oldhtml
变量实际上只是前面的 newhtml
多变的。所以,如果你在主页上点击相同的内容newhtml
实际上应该只是 ruby on rails 生成的 oldhtml
版本(<div id="pop">
中的 html)。我已经尝试附加它们以查看差异所在,但它对我来说看起来完全一样。我希望有人能把我推向正确的方向?谢谢!
最佳答案
我会尝试将 newhtml 放在一个隐藏的 DOM 元素中,然后从 jquery .html()
$('#HiddenDOM').html(newhtml);
if ($('#HiddenDOM').html() === $('#pop').html()) { ... }
未经测试但可能会消除 html 渲染问题。
此外,对 javascript 使用三重相等比较:===
而不是 ==
。有关解释,请参阅 youtube 上关于 Javascript The Good Parts 的 Cockford。
总的来说,我会重新考虑您的设计,因为比较可能无法真正实现,并且会使您的架构暴露于各种浏览器之谜。有时,您首先必须找出什么不起作用才能找到可行的解决方案。
关于javascript - 你如何检查 jquery .html() 变量和 ruby on rails 生成的 html 之间的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10491195/