我有一個包含複選框的div。我也有一個接受jquery對象參數的函數。它看起來像這樣:jQuery:獲取對象的第n個位置
function analyze_checkbox(cb) { ... }
鑑於此,有沒有知道CB參數的子位置的簡單的方法?我在想這樣的事情:
cb.parent().index(cb)
什麼是正確的方法來做到這一點?
謝謝,
歐文
我有一個包含複選框的div。我也有一個接受jquery對象參數的函數。它看起來像這樣:jQuery:獲取對象的第n個位置
function analyze_checkbox(cb) { ... }
鑑於此,有沒有知道CB參數的子位置的簡單的方法?我在想這樣的事情:
cb.parent().index(cb)
什麼是正確的方法來做到這一點?
謝謝,
歐文
如果沒有參數被傳遞給 的.index()方法從.index()
引用,返回值是 指示 的位置的整數jQuery中的第一個元素 對象相對於其兄弟 元素。
所以你的情況cb.index();
應該這樣做
例在http://www.jsfiddle.net/qQzte/
,不要忘了,結果是0型
如果您的複選框真的是彼此的兄弟姐妹,那麼蓋比的回答說cb.index()
應該這樣做是非常正確的。但要小心,你明白index
實際上告訴你什麼。例如,這個標記:
<div id='thediv'>
<label><input type='checkbox' value='1' name='one'>One</label>
<label><input type='checkbox' value='2' name='two'>Two</label>
<label><input type='checkbox' value='3' name='three'>Three</label>
<label><input type='checkbox' value='4' name='four'>Four</label>
</div>
...如果你cb
是來自(說)$('#thediv input[type=checkbox][name=three]')
的cb.index()
結果將是0
(link to example)。顯然不是你想要的。
您可以通過多種方式處理。通過上面的具體示例,您可以看看父母label
是相對於其其兄弟姐妹:cb.parent().index()
(link to example)。但取決於你的標記,這可能很複雜。
有這微妙的變化標記少subceptible方式:選擇正是你要考慮的元素列表,然後問jQuery的地方cb
是列表中。因此,與上面的標記,你可以這樣做:
// The selector choose *exactly* the set of things we want to
// look at, and then `index` looks for `cb` within that list
var index = $('#thediv input[type=checkbox]').index(cb);
事實上:http://jsbin.com/aruzo4 – 2010-10-13 08:38:16
@ T.J。快!大聲笑..也加入我自己的版本以及:) – 2010-10-13 08:41:42
嗨。謝謝。我會試試這個,並在這裏發佈我的結果 – Erwin 2010-10-14 01:18:53