在变更事件中获取选择器值

时间:2013-06-06 03:45:16

标签: javascript jquery

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

我试过这个:

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

并返回一个空字符串。

期望的结果:

frek_menonton_tv :input而不是Object

3 个答案:

答案 0 :(得分:2)

您正在寻找

.selector,已从1.7版本弃用

请参阅Reference

  

.jlector 1.7中不推荐使用.selector属性,只维护在jQuery Migrate插件中支持.live()所需的程度。它可能会在将来的版本中删除,恕不另行通知。该属性从来不是选择器的可靠指示器,可用于获取当前包含在jQuery集中的元素集,它是属性,因为后续遍历方法可能已更改集。需要使用选择器的插件应该在初始化期间将调用者传递给选择器作为插件参数的一部分。

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

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

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

  

.on(events [,selector] [,data],handler(eventObject))

$.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);
   });

});

Demo

答案 1 :(得分:1)

$(this)会提供input

的实例
 $("#frek_menonton_tv :input").change(function(){
        console.log($(this));
    });  

答案 2 :(得分:1)

只需使用$(this)

$("#frek_menonton_tv :input").change(function(){
        console.log( $(this) );// will show Object Input
});