根据jQuery官方文件所提及.html()是使用 This method uses the browser's innerHTML property,
既然使用的是相同方法,为何结果不一样?
<head>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js"></script>
<script>
var md5 = document.getElementById("md5").value;
var hash = CryptoJS.MD5(md5);
document.getElementById("showMD5").innerHTML = hash; //能传正确的值
$("#showMD5").html(hash); //没反应
</script>
</head>
<body>
<input type="text" id="md5">
<button id="btn" onclick="chkMd5()">Check MD5</button>
<div id="showMD5"></div>
</body>
另外jQuery中.text() .html()有什么分别?
console.log($("#showMD5").html());
console.log($("#showMD5").text()); //.html() .text()得出相同结果
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
jquery-1.11.3中html的实现方式:
return access( this, function( value ) {
var elem = this[ 0 ] || {},
i = 0,
l = this.length;
if ( value === undefined ) {
return elem.nodeType === 1 ?
elem.innerHTML.replace( rinlinejQuery, "" ) :
undefined;
}
// See if we can take a shortcut and just use innerHTML
if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
( support.htmlSerialize || !rnoshimcache.test( value ) ) &&
( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
!wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) {
value = value.replace( rxhtmlTag, "<$1></$2>" );
try {
for (; i < l; i++ ) {
// Remove element nodes and prevent memory leaks
elem = this[i] || {};
if ( elem.nodeType === 1 ) {
jQuery.cleanData( getAll( elem, false ) );
elem.innerHTML = value;
}
}
elem = 0;
// If using innerHTML throws an exception, use the fallback method
} catch(e) {}
}
if ( elem ) {
this.empty().append( value );
}
}, null, value, arguments.length );
}