首先,我知道这是基本的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/

10-12 07:33
查看更多