作者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