从jQuery 1.9开始,jQuery对象的.selector属性已被删除. (我有点困惑,为什么,确切).我实际上在一些独特的场景中使用它,我知道我可以做其他事情来防止这种情况.只是想知道是否有人知道从1.9开始抓住选择器的另一种方式?
$('#whatever').selector // (would of returned '#whatever')
我需要.selector的一个例子是当我已经按名称拥有一组复选框时,我希望在该组中看到哪一个被选中:
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
From the docs:
.selector property on jQuery objectsThe remaining purpose of the deprecated .selector property on a jQuery
object is to support the deprecated .live() event. In 1.9, jQuery no
longer attempts to maintain this property in chained methods, since
the use of chained methods was never supported with .live(). Do not
use the .selector property on a jQuery object. The jQuery Migrate
plugin does not attempt to maintain this property.
解决方法:
实际上需要原始选择器的原因应该不多.在您的特定用例中,如果要缩小所选元素的范围,可以使用.filter
[docs]:
$test.filter(':checked').attr('id')
$(‘#whatever’).选择器似乎仍然可以工作.文档说“在1.9中,jQuery不再尝试在链式方法中维护这个属性[…]”.虽然http://api.jquery.com/selector声称它已在1.9中删除.我不知道,这有点令人困惑.