2017-07-27 74 views
0

我有一個jQuery的'每個'功能,通過gridview循環。每次遇到合適的環境下時,它會創建一個新的標題,並添加CSS類到它:jQuery .prev - 我可以在之前獲取實例嗎?

$(this).before('<tr><td></td><td></td><td></td><td></td><td></td></tr>'); 
$(this).prev().addClass('cd_header'); 

我的問題是,我需要設置基於值這個頭的一些屬性在最後頭的元素我創建。所以一個.prev()不起作用;它只是讀取我剛剛創建的標題的屬性。

是否有某種告訴.prev的方式,我希望這兩個實例返回?或者我可以堆棧.prev()。prev()莫名其妙?

回答

1

我認爲你需要做的是將該注入的html分配給一個對象,並得到它的prev。所以,你會得到兩個分組後面

var $row = $('<tr><td></td><td></td><td></td><td></td><td></td></tr>') 
$(this).before($row); 
$row.prev().addClass('cd_header'); 

或更短

$('<tr><td></td><td></td><td></td><td></td><td></td></tr>').insertBefore($(this)).prev().addClass('cd_header'); 
+0

非常華麗,謝謝! – buckshot

2

或者我可以堆棧.prev()。prev()莫名其妙嗎?

當然你可以;你可能應該嘗試過。 prev返回當前集合中每個元素的前一個同胞的集合;沒有理由,你不能再要求prev這樣做,第二次回去一次。

另一種選擇是.prevAll('some-selector').first()prevAll其次first),其中some-selector是一個選擇,將確定你要查找的前一個同級。它發現全部以前的兄弟姐妹匹配選擇器,然後採取其中的第一個(這是由prevAll保證是最接近你開始的地方)。這將不那麼脆弱(例如,如果您改變了插入兩個tr而不是某個點,它會繼續工作)。

+0

嗯,我沒有嘗試,但我一直得到一個錯誤。我會繼續研究我的語法。謝謝。 – buckshot

相關問題