5

从 jQuery 1.9.selector开始,jQuery 对象的属性已被移除。(究竟为什么,我有点困惑)。我实际上在一些独特的场景中使用它,我知道我可以做其他事情来防止这种情况发生。只是想知道是否有人知道从 1.9 开始获取选择器的另一种方法?

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

我需要.selector的一个例子是,当我已经有一组按名称的复选框时,我想在该组中查看哪个复选框被选中

jsFiddle 演示

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 对象上的 .selector 属性

jQuery 对象上已弃用的 .selector 属性的剩余目的是支持已弃用的 .live() 事件。在 1.9 中,jQuery 不再尝试在链式方法中维护此属性,因为 .live() 从未支持使用链式方法。不要在 jQuery 对象上使用 .selector 属性。jQuery Migrate 插件不会尝试维护此属性。

4

2 回答 2

4

实际上需要原始选择器的原因应该不多。在您的特定用例中,如果您想缩小所选元素的范围,可以使用.filter [docs]

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

$('#whatever').selector不过似乎仍然有效。文档说“在 1.9 中,jQuery 不再尝试在链式方法中维护此属性[...]”。尽管http://api.jquery.com/selector声称它已在 1.9 中删除。不知道,有点乱

于 2013-02-19T18:44:36.553 回答
0

我只是将选择器保存在这样的变量中:

var testSelector = 'input[name="test"]';
var test = $(testSelector);
console.log( $(testSelector + ':checked').attr('id') );
于 2020-04-17T09:05:06.430 回答