2014-09-03 2 views
0

Когда я нахожу поиск на моем столе для скрытых полей, я вижу два моих скрытых поля. Тем не менее, я хочу доработать эти 2 поля по их идентификаторам. Я замечаю, что когда я использую find на всей таблице, используя «содержит», я получаю свои 2 поля. Однако, если я нахожу поиск в результатах поиска из скрытых полей, он возвращает пустой набор. Может ли кто-нибудь объяснить, почему это так?using jquery find on result set of find

var table = sender.parentNode.parentNode.parentNode.parentNode; 
    // this finds my 2 hidden fields 
    var hidden_fields = $(table).find("input[type='hidden']"); 
    // this finds each of the 2 fields individually by ID 
    var my_id_fieldA = $(table).find("[id*='hfMyIdFieldA']"); 
    var my_id_fieldB = $(table).find("[id*='hfMyIdFieldB']"); 

    // but this returns an empty set 
    var my_id_fieldA = $(hidden_fields).find("[id*='hfMyIdFieldA']"); 
+2

'$ (hidden_fields) .find (ничего)' не имеет никакого смысла, потому что '' элементы не являются контейнерами - они не могут иметь дочерние элементы. – Pointy

+2

... так что вы, вероятно, хотите [фильтр] (http://api.jquery.com/filter/). – Rup

+0

Наконец, 'hidden_fields' уже является объектом jQuery, его не нужно обертывать:' hidden_fields.jQueryMethod() 'достаточно. –

ответ

1

Вы ищете функции filter, не find. find выбирает дочерние элементы, а filter фильтрует текущий выбор.

Также нет причин, чтобы найти такой стол ... попробуйте что-то вроде этого.

var $table = $(sender).closest("table") 
    , $hidden_fields = $table.find("input[type='hidden']") 
    , $my_id_fieldA = $hidden_fields.filter("[id*='hfMyIdFieldA']") 
    , $my_id_fieldB = $hidden_fields.filter("[id*='hfMyIdFieldB']") 
    , $my_id_fieldA = $hidden_fields.filter("[id*='hfMyIdFieldA']") 
    ;