访问最初在jQuery插件中单击的元素

时间:2015-09-23 16:25:32

标签: javascript jquery

我有以下插件,虽然我希望它能够应用于多个元素,但我不希望为每个元素创建一个新对话框。

但是在dialog.open回调中或单击按钮时,我希望能够访问被单击的元素并打开对话框。

如果我想创建多个对话框,我想我可以将this.each(function () {...}放在init方法中,然后this将是单独点击的元素,但如前所述,我只会一个对话框。

EDIT。我修改了代码,以便它完成我需要它做的事情。使用data似乎有点像我一样。有没有更合适的方法呢?

这是如何完成的?

(function($){
    var defaults = {};

    var methods = {
        init : function (options) {

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

            var dialog = $('<div/>').dialog({
                open: function( event, ui ) {
                    console.log(dialog.data('elementThatWasClicked'));
                },
                buttons: [
                    {
                        text: 'click',
                        click: function() {console.log(dialog.data('elementThatWasClicked'));}
                    }
                ]

            });

            return this.each(function () {
                var $this=$(this);
                $this.click(function(){dialog.data('elementThatWasClicked',$this).dialog('open')});

            });
        }
    };

    $.fn.test = function(method) {
        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.test');
        }    
    };
    }(jQuery));

$(function(){
    $('.bla').test();
});

0 个答案:

没有答案