2013-06-03 70 views
2

使用jQuery,如何在給定的元素ID之後找到特定類型的第一個出現的元素?期望的元素可能或可能不是緊接着的元素。獲取下一個元素,不一定是同級和沒有類

下面的函數的目的是在單選按鈕後面隱藏類型'select'的第一個出現的元素。

function showDropDown(radioButtonElem) { 
    if(document.getElementById(radioButtonElem.id).checked) { 
     /*$(Get next <select> element after radioButtonElem.id).css("display", "none");*/ 
    } 
} 

<input type="radio" name="radioButtonGroup" value="sfn" id="sfn" onclick="showDropDown(this);"> 
<select id="myDropDown">...</select> 

我對'next()'函數的理解是它只能找到相同類型的元素。我可能是錯的;如果我請解釋如何使用它來解決我的問題。編輯: 感謝您的反饋意見。根據你的意見,我認爲這會起作用,但事實並非如此。我錯過了什麼?

<script> 
    function showDropDown(radioButtonElem) 
    { 
     if(radioButtonElem.checked) 
    { 
     $(radioButtonElem).nextAll('select').first().css('display', 'none'); 
    } 
    } 
</script> 
+1

[http://api.jquery.com/closest/](http://api.jquery.com/closest/)如果選擇不同級 –

+0

你是對的,.next不是你需要的。這個問題之前已經被問過很多次了,但是在使用它的時候有很多不同的情況,所以可能很難找到一個符合你的情況的問題。你給的樣本顯示select是兄弟姐妹,你說它不是,所以我們很難爲你找到一個副本。你爲什麼要做'document.getElementById(radioButtonElem.id).checked'而不是'radioButtonElem.checked'?它似乎有點多餘。 –

+0

你的意思是「不一定是下面的兄弟姐妹」,即它將是兄弟姐妹,但可能有干預元素。 – Alnitak

回答

1

如果所需的元素,是兄弟,只是不一定是緊隨的兄弟姐妹,你可以使用之後.first()

$(this).nextAll('select').first() 

而且.nextAll() - 你有jQuery的 - 你應該使用它事件處理太:

function showDropDown(ev) { 
    if (this.checked) { 
     $(this).nextAll('select').first().hide(); 
    } 
} 

$(':radio').on('click', showDropDown); 

請參閱http://jsfiddle.net/alnitak/RsrwV/

0

嘗試this或使用下面

var getNextTD = $('table.listview').nextAll('td').not('[class]').first(); 
相關問題