是这条线
$(this).attr("id").replace("_button","");
相当于这一个?
this.attr("id").replace("_button","");
解决方法
因为这总是包含对调用对象的引用,它确实取决于你在哪里调用该代码.
如果你在一个jQuery事件处理程序中调用它,这是对DOM元素本身的引用,所以你需要通过调用$()将它转换为一个jQuery对象,然后再调用jQuery方法.这反过来意味着
this.attr("id").replace("_button","");
不会在那里工作
如果你正在写一个插件方法,这是一个jQuery对象(引用),这两行实际上是一样的.当然,如果这已经是一个jQuery对象,你做额外的工作,试图再次解析.
例:
$.fn.yourplugin = function(){ // this refers to a jQuery object return this.each(function(i,v){ }); });