作者etrexetrex (moonet)
看板Ajax
标题[问题] 用 jquery selector 在 js object 上
时间Tue Jan 8 17:43:18 2013
目标 : 把 selector 用在 object 上
测试程式 :
http://jsfiddle.net/vSShu/
function pushText(text)
{
$("#output").append(text + "<br/>");
}
var list = [
{id:'a1', value:5},
{id:'a2', value:4},
{id:'a3', value:3},
{id:'a4', value:2},
{id:'a5', value:1}
];
pushText( '$(list).attr("id") = ' + $(list).attr("id") );
pushText( '$(list).attr("value") = ' + $(list).attr("value") );
pushText( '$(list).eq(3).attr("id") = ' + $(list).eq(3).attr("id") );
pushText( '$(list).filter("#a2").length = ' +
$(list).filter("#a2").length );
pushText( '$(list).filter(\'[id="a2"]\').length = ' +
$(list).filter('[id="a2"]').length );
pushText( '$("div").filter("#a2").length = ' +
$("div").filter("#a2").length );
pushText( '$("div").filter(\'[id="a2"]\').length = ' +
$("div").filter('[id="a2"]').length );
因为 js 没有型别
所以只要 jquery selector 的 code 不是只有支援DOM的话
应该可以做到某种程度上 对 object 或 array 的支援
前面三行测试了 attr 跟 eq 可以使用
可以猜测 jquery 内部的程式大概是 list[attr] 之类的写法 所以可以用
但是 filter 不能使用
有人试过这个吗 ?
--
blog:
http://etrex.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.137.198.18
1F:→ akiratw:话说有非这麽做不可的理由吗? 01/08 17:52
2F:→ etrexetrex:没有 只是想这麽作 01/08 17:55
3F:→ akiratw:因为object不是node节点所以不行 01/08 18:31
4F:→ etrexetrex:可是我可以 $(list).eq(2).attr("aaa","bbb"); 01/08 18:44
5F:→ akiratw:每个method的实作方法不同 有兴趣研究可以看jQuery原始码 01/08 19:23
6F:→ grence:有公开共用价值的 function都在 utilities里了 01/09 22:01
8F:→ NOXI:他有检查传入filter的东西是什麽 01/11 03:40
9F:→ NOXI:jquery长得像array是因为他用[].slice.call(你传入的object) 01/11 03:56
10F:→ NOXI:抱歉说错了,是[].push.call(你传入的东西) 01/11 04:10
11F:→ NOXI:然候prototype里有splice: [].splice 所以看起来像array 01/11 04:11