<form name="form1" method="post" action="">
<input type="text" name="name">
</form>
<script language="JavaScript" type="text/JavaScript">
alert($("form[name=form1]").length);
//得到0
</script><form name="form1" method="post" action="">
<input type="text" name="name1">
</form>
<script language="JavaScript" type="text/JavaScript">
alert($("form[name=form1]").length);
//得到1
</script>请教解决办法?请不要回答别使用name="name"的input框,谢谢。
<input type="text" name="name">
</form>
<script language="JavaScript" type="text/JavaScript">
alert($("form[name=form1]").length);
//得到0
</script><form name="form1" method="post" action="">
<input type="text" name="name1">
</form>
<script language="JavaScript" type="text/JavaScript">
alert($("form[name=form1]").length);
//得到1
</script>请教解决办法?请不要回答别使用name="name"的input框,谢谢。
其中的Sizzle闭包中return makeArray( context.querySelectorAll(query), extra );这行代码没有检测是否支持querySelectorAll这个方法.....
但是外层document.querySelectorAll做了检测, 所以有些迷惑....
刚测试, 出问题的浏览器下, 直接alert(document.querySelectorAll)是undefined期待高人解答
if ( document.querySelectorAll ) {
(function(){
var oldSizzle = Sizzle, div = document.createElement("div");
div.innerHTML = "<p class='TEST'></p>"; // Safari can't handle uppercase or unicode characters when
// in quirks mode.
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
return;
}
Sizzle = function(query, context, extra, seed){
context = context || document; // Only use querySelectorAll on non-XML documents
// (ID selectors don't work in non-HTML documents)
if ( !seed && context.nodeType === 9 && !isXML(context) ) {
try {
return makeArray( context.querySelectorAll(query), extra );
} catch(e){}
}
return oldSizzle(query, context, extra, seed);
}; for ( var prop in oldSizzle ) {
Sizzle[ prop ] = oldSizzle[ prop ];
} div = null; // release memory in IE
})();
}
貌似你写法不对吧。
alert($("form[name=form1]").length);
应该是:alert($("form[name='form1']").length);
jQuery选择器中要加上‘’--$("form[name='form1']")
不是bug!!
jquery是js的封装,看看jquery的bug存在不存在可以用js来实现测试
js测试一下就可以了alert(document.getElementsByTagName("form").length)
//代码来自JQ1.3.2
find:{
...,
NAME:function(V,Y,Z){
if(typeof Y.getElementsByName!=="undefined"){
var U=[],X=Y.getElementsByName(V[1]);//通过name属性获取
for(var W=0,T=X.length;W<T;W++){
if(X[W].getAttribute("name")===V[1]){//判断name属性是否等于V[1],这不是多次一举嘛,个人感觉可以将这个判断注释掉
U.push(X[W]);
}
}
return U.length===0?null:U
}
},
....
}注释后的执行效果:
<form name="form1" method="post" action="">
<input type="text" name="name" />
</form>
<script language="JavaScript" type="text/JavaScript">
alert($("form[name=form1]").length);//1
alert($("form[name=form1]")[0].method);//post
</script>
<input type="text" name="name" />
</form>
<script language="JavaScript" type="text/JavaScript">
alert($("form[name=form1]").length);//1
alert($("form[name=form1]")[0].method);//post
alert($("form[name=form1]")[0].name);//当然了,这个还是object,在使用的时候还是尽量避免使name属性为"name"
</script>