0

下面是我想要做什么的一个非常简化的版本。

我正在尝试设置一个像下面这样的自定义选项,但是如何在 wring 上下文中使用 $(this) 作为它。我如何编写它以便主对象在函数中使用而不是 this,现在我得到一个 fnode 错误。

beforeDOTHIS: function () { 

                        $(this).css({color:'blue'});
                        alert($(this).text());

                    } 

http://jsfiddle.net/Dpee/

HTML

<div>




    <div id="One">test1</div>

    <br />
    <br />
    <br />

    <div id="Two">test2</div>

    <br />
    <br />
    <br />

    <div id="Three">test3</div>


</div>

javascript

  /* To be moved to own custom js plugin file ------------------------------------------- */

                //custom plugin
                $.fn.addMySpan = function (customOptions) {

                    var defaults = {
                        textColor: "#033",
                        beforeDOTHIS: function () {}
                    };

                    var settings = $.extend({}, defaults, customOptions);

                   return this.each(function () {

                       settings.beforeDOTHIS();

                  });

                };

        /* -----------------------------------------------------------------------------------------------------*/



        $(document).ready(function () {

            $('#One,#Two,#Three').addMySpan({
                textColor: "red",
                beforeDOTHIS: function () { 

                    $(this).css({color:'blue'});
                    alert($(this).text());

                } 
            });




        });
4

1 回答 1

1

存储一个引用,this然后将其设置为函数的上下文call

            var self = this;

            var defaults = {
                textColor: "#033",
                beforeDOTHIS: function () {}
            };

            var settings = $.extend({}, defaults, customOptions);

            return this.each(function () {

               settings.beforeDOTHIS.call(self);

           });
于 2013-10-07T10:16:20.147 回答