JQuery/JavaScript-访问方法

JQuery/JavaScript-访问方法,jquery,Jquery,我对JavaScript编程有点陌生,不了解方法访问。我有一些代码如下所示: (function ($) { $.fn.myCustomUIElement = function (options) { var props = { value: 1 }; return this.each(function () { initialize(); }); function initialize() { /* initialization

我对JavaScript编程有点陌生,不了解方法访问。我有一些代码如下所示:

(function ($) {
    $.fn.myCustomUIElement = function (options) {
        var props = { value: 1  }; 

        return this.each(function () { initialize(); }); 
        function initialize() { /* initialization code */  }

        function toggle() { if (props.value == 1) { props.value = 0; } else { props.value = 1; } }
    };
})(jQuery);
我的HTML页面有一个锚定标记,负责切换myCustomUIElement的状态。显示此内容并初始化myCustomUIElement的HTML如下所示:

<div id="myElement"></div>        
<a href="#" onclick="toggleFromHtml('myElement');">toggle</a>

<script type="text/javascript">
    $(document).ready(function () {
        $("#myElement").myCustomUIElement();
    });

    function toggleFromHtml(e) {
        $("#" + e).toggle();
    }
</script>

$(文档).ready(函数(){
$(“#myElement”).myCustomUIElement();
});
函数toggleFromHtml(e){
$(“#”+e).toggle();
}
我的问题是,myCustomUIElement对象中的toggle方法从未被调用。我可以很好地调用toggleFromHtml。如何访问在JavaScript中定义的方法,如上所示?有办法吗?请注意,如果可能的话,我不想重写第一个代码片段中显示的JavaScript。如果可能,我想从toggleFromHtml方法调用该方法


谢谢大家!

我想你已经有了一个插件的开始,你需要扩展jQuery对象。下面是一个示例,注意
$.fn.extend({})
myCustomUIElement()
将是您的方法名

jQuery插件

(function($){
$.fn.extend({
    myCustomUIElement: function(options){
        return this.each(function(){
            new $.MyCustomUIElement(this, options);
        });
    }
});

$.MyCustomUIElement = function(target, options){
    var $target = $(target);

    $target.bind('click', {}, function(e){
        e.preventDefault();

        // your event code
        alert(options.myVar + ' ' + $(this).text());
    });
};
})(jQuery);
您的initjavascript

$(document).ready(function(){
    $('#wrap .myElement').myCustomUIElement({
        myVar: 'click me!'
    });
});
还有HTML

<div id="wrap">
    <a class="myElement" href="#">toggle 1</a>
    <a class="myElement" href="#">toggle 2</a>
</div>


我会继续看这个,我想我一开始误解了你的问题,但基本上这是在创建一个jQuery插件..toggle();是插件代码中的私有方法。您需要执行类似$.fn.toggle()=函数(选项){/*dostuff*/}的操作才能以您尝试的方式访问它。另外,我相信toggle已经是JQuery中的一种方法了;你可能想给它起个别的名字。您也可以通过$.fn.mycustomUIElement.toggle=function(){}和$('selector').mycustomUIElement.toggle()@mervyn访问它。问题是,我无法从名为$.fn.myFunction=function(){}的新方法访问props属性。这就是我的问题所在。但是我不知道如何克服它。不能调用未公开的方法。我不确定你到底想完成什么,需要进一步澄清。