2013-02-19 2 views
4

Начиная с jQuery 1.9 свойство объектов jQuery было удалено .selector. (Я немного смущен, почему именно). Я действительно использую его в нескольких уникальных сценариях, и я знаю, что я мог бы сделать другие вещи, чтобы предотвратить это. Просто интересно, знает ли кто-нибудь другой способ захвата селектора с 1.9?Альтернатива свойству .selector теперь, когда оно удалено в jQuery 1.9

$('#whatever').selector // (would of returned '#whatever') 

Одним из примеров, где мне нужно .Селекторный, когда у меня уже есть группа флажков по имени, и я хочу видеть, в этой группе, которая одна является проверено:

jsFiddle DEMO

var $test = $('input[name="test"]'); 

console.log($test); 
console.log($(':checked', $test).attr('id')); // returns --undefined-- 

console.log('now with .selector: '); 
console.log($($test.selector + ':checked').attr('id')); // returns correct 

Из документов: .Селекторных объекта на JQuery объекты

Оставшейся цель устаревшех .Селекторных собственностей на JQuery объекта является поддержкой события устаревшего .live(). В 1.9 jQuery no больше пытается сохранить это свойство в цепных методах, так как использование цепных методов никогда не поддерживалось с помощью .live(). Не следует использовать свойство .selector для объекта jQuery не . Плагин jQuery Migrate не пытается сохранить это свойство.

+5

ум, обеспечивающий один из немногих уникальных сценариев? (код, а не описание, пожалуйста) – PlantTheIdea

+2

'$ ('# whatever'). Селектор' все еще работает. В документации говорится: «В версии 1.9 jQuery больше не пытается поддерживать это свойство ** в цепных методах ** [...]" *. Хотя http://api.jquery.com/selector/ утверждает, что он был удален. Я не знаю, это немного запутанно. Я думаю, официальное заявление может прояснить это, возможно, вы можете опубликовать их в своем списке рассылки/форуме/группе/независимо. –

+1

Почему бы не сохранить селектор отдельно? – marsze

ответ

3

На самом деле не должно быть причин оригинальный селектор. В вашем конкретном случае использования, если вы хотите, чтобы сузить набор выбранных элементов, можно использовать .filter[docs]:

$test.filter(':checked').attr('id') 

$('#whatever').selector все еще, кажется, работает, хотя. В документации указано «В 1.9 jQuery больше не пытается сохранить это свойство в цепных методах [...]«. Хотя http://api.jquery.com/selector утверждает, что он был удален в 1.9. Я не знаю, это немного запутанно.

+0

Спасибо! Должно быть, мозг ... слишком остро реагировал, что он ушел хаха –