获取当前的jQuery选择器字符串?

调用自定义插件时,如何获取当前选择器字符串?

$('my_selector p').my_plugin(); 

想在我的脚本中输出my_selector p 。 我怎样才能访问这个字符串?

您可以使用selector属性:

 $('my_selector p').selector // my_selector p 

弃用版本 1.7删除: 1.9

选择后弃用v.7.7:

如果您只处理id和类作为选择器,则可以使用以下命令:

 var selector = (typeof($(this).attr('id')) !== 'undefined' || $(this).attr('id') !== null) ? '#' + $(this).attr('id') : '.' + $(this).attr('class'); 

有更简洁的方法,但自从1.7以来由于浏览器之间的不一致而删除了.selector,这是我的首选。

被弃用,官方建议是将选择器添加为函数调用中的参数: https : //api.jquery.com/selector/

需要在其插件中使用选择器字符串的插件可能需要它作为方法的参数。 例如,“foo”插件可以写成

 $.fn.foo = function( selector, options ) { /* plugin code goes here */ }; 

并且使用该插件的人会写

 $( "div.bar" ).foo( "div.bar", {dog: "bark"} ); 

冗余,是的,​​但它总是可靠的。

 jQuery.fn.getSelector = function() { return this.data('selector'); }; 

随着部门的弃用我使用

 index = document.getElementById('category').value select = $("#category option[value=#{index}]")[0].innerHTM 

只需两行代码

或者如果你真的很便宜

 select = $("#category option[value=#{document.getElementById('category').value}]")[0].innerHTML 

最好的workaroud是

 function mySelector(selector) { return $.extend($(selector),{"selector":selector}); } 

这将返回经典的jquery对象,如$()所示

 mySelector(".myClass") 

这会返回选择器的字符串

 mySelector(".myClass").selector 

扩展到kevinmicke的答案 :您可以在事件对象中获取传递回调函数的选择器。

在回调函数中

 event.handleObj.selector 

例:

您将在e.handleObj.selector中获取选择器字符串

  $( '.container' ) .on('change', 'select.mySelector', function (e) { console.log(JSON.stringify(e)); $('.selector').text(e.handleObj.selector); $('.value').text($(this).val()); }); 
  

Your Selector:

Selected Value: