Ну, селектор работает, он просто не дает того, что вы хотите:
Согласно JQuery Docs .prev([expr])
:
Получить набор элементов, содержащих
уникальные предыдущие братья и сестры каждого из
согласованный набор элементов. Используйте
необязательное выражение для фильтрации
согласованный набор. Только тот сразу
предыдущий брат возвращается, не все
предыдущие братья и сестры.
Это означает, что $(elem).prev("div.a").find('.b')
ищет любого предшествующего брата в DOM-дереве, которое является div.a
, и возвращает первое - затем ищите внутри этого элемента, используя .find()
для .b
Принимая во внимание: $(elem).prev("div.a .b")
ищет любого предыдущего родного брата, который является div.a .b
, и возвращает первого.
Они не эквивалентны и поэтому дают разные результаты.