2014-07-01 54 views
3

我知道了通過jQuery traversal文檔,沒有一個jQuery函數,將做我在找什麼,所以我問什麼組合(如果有的話)會做的伎倆。jQuery - 最近的上一個兄弟

如果我們有1 <span>爲每<textarea>頁面上,而無需獲得創意加入id的或class ES或data-屬性等想獲得最接近以前<span><textarea>那就是target當前的​​事件。

我們可以用什麼樣的jQuery遍歷函數來解決這個問題?我研究並嘗試了我所知道的一切。

查看此Fiddle以更好地觀察此問題。

回答

4

沒有一個jQuery函數,會做什麼,我正在尋找

其實,你想要的是prev

使用prev('span')獲取與給定選擇器匹配的上一個元素。

$('div').on('keydown', 'textarea', function() { 

     $(this).prev('span').text($(this).val()) 

}) 

http://jsfiddle.net/aQ83s/2/

需要注意的是,在​​事件,textarea的價值尚未改變。

+0

幹得好,和日謝謝你。 –

+0

這個答案是錯誤的。如果添加回答者刪除的'
'標記,它將不再起作用,這根據op是原始點。看到這裏:http://jsfiddle.net/r3wt/aQ83s/16/ – r3wt

+0

@ r3wt這不是問的問題。這個答案沒有「刪除」任何東西,它是基於提供的小提琴:http://jsfiddle.net/id_0t/aQ83s/1/ – meagar

0

一種替代,使用自定義數據屬性和目標:

http://jsfiddle.net/r3wt/aQ83s/15/

jQuery的

$('div').on('keyup', 'textarea', function() { 
    var target = $("span[extra-data='"+$(this).attr('target')+"']"); 
    target.text($(this).val()); 
}); 

HTML

<div> 
    <span extra-data="1">1</span> 
    <br /> 
    <textarea target="1"></textarea> 

    <span extra-data="2">2</span> 
    <textarea target="2"></textarea> 

    <span extra-data="3">3</span> 
    <textarea target="3"></textarea> 
</div> 
+1

感謝您對此@ r3wt的意見。我的問題指出,不要使用'id'或'class'或'data-'屬性很重要的原因是通過社區確認jQuery中沒有我忽略或濫用的功能(這是在鏈接函數時可以很容易做到),或者在生成動態HTML塊時有希望緩解使用額外的功能。再次感謝您的意見。 –

+0

@ id.ot沒問題 – r3wt