1

如何在更改事件中获取选择器值?

我试过这个:

    $("#frek_menonton_tv :input").change(function(){
        $(this).selector;
    });

并返回一个空字符串。

期望的结果:

frek_menonton_tv :input不是Object

4

3 回答 3

2

.selector您正在寻找的,已从 1.7 版弃用

参考

.selector 属性在 jQuery 1.7 中已弃用,仅在 jQuery Migrate 插件中支持 .live() 所需的范围内进行维护。在未来的版本中,它可能会被删除,恕不另行通知。该属性从来都不是选择器的可靠指示符,可用于获取当前包含在 jQuery 集中的元素集,其中它是一个属性,因为后续遍历方法可能已经更改了该集。需要使用选择器的插件应该让调用者在初始化期间将选择器作为插件参数的一部分传入。

因为你可以像这样得到选择器:

   var obj = $("#frek_menonton_tv :input");
    alert(obj.selector);

因此,您可以进行 hack 将您的事件绑定包装到另一个函数并将其用于所有事件绑定。由于可以在绑定期间使用重载 for 将任何数据添加到绑定到控件的事件.on(),请使用 subscribe 函数内部上下文中的选择器并将其绑定到事件数据。

.on(事件 [,选择器] [,数据],处理程序(事件对象))

$.fn.subscribeEvent = function(eventType, callBack) {
    this.on(eventType, {'selector': this.selector}, callBack);
   //Older versions of jquery you can use bind
   //this.bind(eventType, {'selector': this.selector}, callBack);

};

$(function() {

   $("#frek_menonton_tv :input").subscribeEvent('change', function(e){
      alert(e.data.selector);
   });

});

演示

于 2013-06-06T03:53:11.690 回答
1

$(this)将给出实例input

 $("#frek_menonton_tv :input").change(function(){
        console.log($(this));
    });  
于 2013-06-06T03:46:01.973 回答
1

只需使用$(this)

$("#frek_menonton_tv :input").change(function(){
        console.log( $(this) );// will show Object Input
});
于 2013-06-06T03:47:11.697 回答