[問題] 用 jquery selector 在 js object 上

看板Ajax作者 (moonet)時間12年前 (2013/01/08 17:43), 編輯推噓0(0011)
留言11則, 4人參與, 最新討論串1/1
目標 : 把 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

01/08 17:52, , 1F
話說有非這麼做不可的理由嗎?
01/08 17:52, 1F

01/08 17:55, , 2F
沒有 只是想這麼作
01/08 17:55, 2F

01/08 18:31, , 3F
因為object不是node節點所以不行
01/08 18:31, 3F

01/08 18:44, , 4F
可是我可以 $(list).eq(2).attr("aaa","bbb");
01/08 18:44, 4F

01/08 19:23, , 5F
每個method的實作方法不同 有興趣研究可以看jQuery原始碼
01/08 19:23, 5F

01/09 22:01, , 6F
有公開共用價值的 function都在 utilities裡了
01/09 22:01, 6F

01/09 22:01, , 7F

01/11 03:40, , 8F
他有檢查傳入filter的東西是什麼
01/11 03:40, 8F

01/11 03:56, , 9F
jquery長得像array是因為他用[].slice.call(你傳入的object)
01/11 03:56, 9F

01/11 04:10, , 10F
抱歉說錯了,是[].push.call(你傳入的東西)
01/11 04:10, 10F

01/11 04:11, , 11F
然候prototype裡有splice: [].splice 所以看起來像array
01/11 04:11, 11F
文章代碼(AID): #1Gw-e-m8 (Ajax)
文章代碼(AID): #1Gw-e-m8 (Ajax)