首先,我知道这是基本的JS问题,而不是jQuery。我正处于那个学习点,似乎无法完全解决一些示波器问题。所以我需要一些解释。
我一直在阅读我能找到的每篇文章/教程,但只需要一些答案。我设置了此基础代码进行试验(因为实际代码太大而无法在此处发布)。
在下面的实验中,单击选择器1更改按钮时,将正确显示'cmd'变量,但是对此this.options的引用是'undefined',因为它是MySelector()的不同实例,除非我离我很远。
那么如何调用这样的对象实例呢?
例:
您可以通过创建jQueryUI的对话框来使用它,然后再将诸如$('#mydiv')。dialog('close');之类的命令传递给它。然后将访问附加到该元素的实例。如何完成的?
JQUERY_MYSELECTOR.JS
(function($){
$.fn.MySelector = function(incoming) {
if (typeof(incoming) != 'object') {
return runCommand(incoming);
}
var options = $.extend({},{
id: false,
backgroundColor: false
},incoming);
function runCommand(cmd) {
alert('blah:'+this.options.backgroundColor+"\n"+'cmd:'+cmd);
}
}
})(jQuery);
脚本
<script type="text/javascript" src="jquery_myselector.js"></script>
<script type="text/javascript">
$j(document).ready(function() {
$j('#selector1).MySelector({ backgroundColor: '#000000' });
$j('#selector1-change').click(function() {
$j('#selector1').MySelector('mooocow');
});
});
</script>
样式
<input type="button" value="selector1" id="selector1" />
<br/>
<input type="button" value="selector1-change" id="selector1-change" />
更新
忘记使用选择器1(duh)上的插件
最佳答案
在为options赋值之前,您要先调用runCommand-options在runCommand主体内的值为undefined
。不要问我在声明它之前JS如何看到runCommand的主体,但是可以。
同样,在MySelector的第一级,this
绑定到运行$j('#selector1-change')
的结果,该结果是一个数组。您将需要迭代该数组。
尝试这样的事情:
(函数($){
函数runCommand(e,cmd){
alert('blah:'+ e.options.backgroundColor +“ \ n” +'cmd:'+ cmd);
}
$ .fn.MySelector =函数(传入){
this.each(function(){
if(typeof(incoming)!='object'){
返回runCommand(this,入站);
}其他{
this.options = $ .extend(this.options || {
id:假,
backgroundColor:假
},传入);
}
});
}
})(jQuery);
关于javascript - jQuery插件选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1151957/