我的对象/功能范围和对某些事物的一般理解有问题。我正在调用doc中的jQuery函数,如下所示:
$("#interactiveQA .actionTile").on('click',function(){
$(this).activeTiles("init");
});
然后我在这里创建脚本:
(function($) {
var methods = {
init: function() {
var tileClicked = $(this).attr('id');
}
};
$.fn.activeTiles = function(method) {
// Method calling logic
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.slider');
}
};
})(jQuery);
以下是我要找的内容。尽可能在技术上,你能解释为什么var tileClicked = $(this)attr('id')在当前位置不起作用吗?你能否详细解释一下你将采取哪些不同的做法或最佳做法等?
答案 0 :(得分:5)
错字:
$(this).attr('id');
请注意.
答案 1 :(得分:1)
这通常是我尝试设置插件的构造函数的方法:
$.fn.whatever = function (method) {
var args = arguments;
var argss = Array.prototype.slice.call(args, 1);
return this.each(function () {
$this = $(this);
if (methods[method]) {
methods[method].apply($this, argss);
}
else if (typeof method === "object" || !method) {
methods.init.apply($this, args);
}
else {
$.error("Method " + method + " does not exist on jQuery.whatever");
}
});
};
我不确定它是否能解决您的问题,但我过去没有遇到过麻烦......
答案 2 :(得分:0)
如果你的this
init
已经是jQuery对象了,也许你不应该使用$(this)
,而是简单地写this
,如下所示:
init : function( ) {
var tileClicked = this.attr('id');
}