これを試して:
$('select:empty:first');
ただし、上記のセレクターは、select
ボックスが次のような
場合にのみ機能することに注意してください
<select></select> // even without any newline
:empty
改行またはテキストノードを持つイベントではなく、子のないポイント要素のためです。
したがって、あなたselect
が次のように見える場合:
<select>
</select>
上記のセレクターは失敗します。両方のタイプのようselect
にするには、使用できます
$('select').filter(function() {
return !this.innerHTML.replace(/\s/g,'').length;
}).first();
または@gdoronが言及したように
$('select').filter(function() {
return !$.trim(this.innerHTML);
}).first();
私の選択では、2番目が信頼できます。
// solution to your recursive search
$('select')
.filter(function() { // filtering for empty select
return !this.innerHTML.replace(/\s/g,'').length;
})
.first() // taking the first
.addClass('lastIndentified'); // adding a class to keep track
$('button#search').on('click', function() {
// reference for last empty select
var lastIndentified = $('select.lastIndentified');
lastIndentified
.nextAll('select') // searching for all select
.filter(function() { // making filtering
return !this.innerHTML.replace(/\s/g,'').length;
})
.first() // taking first one from lastIndetified
.addClass('lastIndentified');
lastIndentified.removeClass('lastIndentified'); // remove class from last empty select and pass it to new empty select
// for example
// calling function to process with last empty select
processWithLastEmptySelect($('select.lastIndentified'));
});
function processWithLastEmptySelect(lastSelect) {
// your code if needed
lastSelect.css('border', '1px solid green');
}
ワーキングデモ