2014-01-16 71 views
0

我有一個包含與未組織多個相同的元素的DIV網站...如何使用jquery在當前元素之前/之後選擇具有特定ID的元素?

例如:

<div> 
    <div id='abc_152142'> 
    </div> 
    <div id='abc_2353253'> 
    </div> 
    <div id='abc_3421121'> 
    </div> 
</div> 
<div> 
    <div id='abc_44211241'> 
    </div> 
</div> 
<div> 
    <div id='abc_541221421'> 
    </div> 
</div> 
<div> 
    <div id='abc_654354'> // --> THIS ONE IS SELECTED 
    </div> 
    <div id='abc_754335'> 
    </div> 
    <div id='abc_845345'> 
    </div> 
</div> 

所以寫在代碼我的ID「abc_654354」,並希望使用在當前元素前後開始的相同ID獲取元素。

我曾嘗試:

$(this).prev("div[id^='td_']"); 
$(this).next("div[id^='td_']"); 

並沒有得到我任何結果...

ID是隨機的,他們有共同的唯一的事情是ID開頭(在此例如我用td_)。

謝謝你的幫忙!

+1

提供'this'語境?一些處理程序 –

+1

你的問題不清楚。你的ID是以'td_'或'abc_'爲前綴的嗎? –

+0

並通過相同的ID獲取元素?在html中只能有一個id,請使用class? – Rohan

回答

1

您可以簡單地選擇基於他們對jQuery的集合中的索引的元素:

var $e = $('div[id^="td_"]'); 
var i = $e.index(this); 

var $before = $e.eq(i - 1); 
var $after = $e.eq(i + 1); 

http://jsfiddle.net/QGsza/

+0

是感謝...的解決辦法是使用索引的工作......但我總是得到-1爲$ e.index(本) –

+0

@ M.V結果。這意味着'$ e'集合不包含'this'元素,請確保選擇器是正確的,我已經添加了一個小提琴。 – undefined

+0

謝謝你!我知道了!現在,它的工作原理...我所做的就是再次打電話給這個ID,它的工作原理!大!謝謝! –

1

如果行爲這裏以前:

<div> 
    <div id='abc_541221421'> 
    </div> 
</div> 
<div> 
    <div id='abc_654354'> // --> THIS ONE IS SELECTED 
    </div> 
    <div id='abc_754335'> 
    </div> 
    <div id='abc_845345'> 
    </div> 
</div> 

<div id='abc_541221421'>被退回然後:

function getPrevious(){  
    var previous = $(this).prev("div[id^='abc_']"); 
    if (previous.length > 0) 
     return previous; 
    return $(this).parent().prev().find("div[id^='abc_']:last") 
} 

,併爲下:

function getNext(){  
    var next = $(this).next("div[id^='abc_']"); 
    if (next.length > 0) 
     return next; 
    return $(this).parent().next().find("div[id^='abc_']:first") 
} 

Here's小提琴。

+0

這也可以工作......但正如我所說的,代碼實際上是無組織的,無法確定這個結構總是有效的!但無論如何謝謝你的建議! –

相關問題