2012-06-19 3 views
-2

Как я могу объединить эти два селекторы:JQuery селекторы объединить

$("td.listas select:last option:selected") 

Это не работает!

То, что я пытаюсь достичь:

  • Получить выбрать вход из тд с классом Листас
  • Получить вариант что выбранный

Примечания:

  • В этом тд, у меня есть два выбрать входы.

Код рабочего:

var selectprimeiro = $('td.listas select:first'); 
    var selectsegundo = $('td.listas select:last option'); 
    selectsegundo.prop("selected",true); 
    var selected = $("td.listas select:last option:selected"); 
    selected.each(function(){ 
     selectprimeiro.append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>"); 
     selected.remove(); 
    }); 
+1

Я вижу только один селектор. В любом случае, вопросы о селекторах должны дополняться разметкой и объяснением, какие элементы вы хотите выбрать, поскольку это то, что делают селекторы: выберите элементы. –

+1

Вы пытаетесь выбрать выбранную опцию последнего элемента 'select' в' td' с классом 'listas'? – Marcel

+0

Если у вас есть контроль над html, дайте каждому выбрать идентификатор. Это сделает вещи намного проще –

ответ

4

Я думаю, что вы хотите

var lastSelectedOptionElement = $("td.listas select option:selected").last(); 

Сначала вы получите все выбранные варианты, а затем взять последний из них. Gratuitous live example | source

Вы могли бы попытаться сделать option:last:selected, но это не будет работать (если последний параметр в списке не происходит должны быть выбраны), так как option должен быть как:lastи:selected.


Update:

Re правки:

В этом тд, у меня есть два выбора входов.

Если они не множественного выбора являются select элементы, чтобы получить выбранный option элемент:

opt = $("td.listas select:first option:selected"); // The first one 
// or 
opt = $("td.listas select:last option:selected"); // The last one -- this is your original selector 

Если они множественного выбора, объединить два метода выше:

// The *last* selected option in the *first* select list: 
opt = $("td.listas select:first option:selected").last(); 

// The *last* selected option in the *last* select list: 
opt = $("td.listas select:last option:selected").last(); 

// The *first* selected option in the *first* select list: 
opt = $("td.listas select:first option:selected").first(); 

// The *first* selected option in the *last* select list: 
opt = $("td.listas select:last option:selected").first(); 
+0

Посмотрите на вопрос, я его отредактировал. – silentw

+0

@silentw: Являются ли мульти-выбор? Какова фактическая конечная стоимость, которую вы ищете? Неясно. –

+3

Если это не эквивалентно селектору OP (при условии, что он не мультивыбор)? Здесь отлично работает: http://jsfiddle.net/4m3jG/1/. Я думаю, что проблема в другом месте. –

1

Ваш селектор выглядит правильно, где вы, возможно, ошибаетесь, получает значение, вам просто нужно добавить .val() на его конец.

var lastSelVal = $("td.listas select:last option:selected").val(); 

Грубый демо:jsfiddle.net/Marcel/4m3jG/

Смежные вопросы