本人开发jQuery组件过程中一直有个问题困扰中,希望知道的朋友帮帮我,问题如下(function($){
jQuery.fn.datagrid.delete=function(options){
//我想在这里取得jQuery.fn选择器选择的对象,我该怎么做
};
})(jQuery);

解决方案 »

  1.   


    $.extend($.fn, {
         datagrid : function(options){
        
         }
    });
        
    $.fn.datagrid.delete=function(options){
    var self = options.el;//把元素以参数形式传入
    };

    var el = $("#xxx");
    el.datagrid.delete({el:el})
      

  2.   

    不过现在很少这种写法了,这样会将delete方法直接暴露出来
    $.extend($.fn, {
         datagrid : function(options){
         //存放方法
         var fn = {
         "delete" : function(option){
         //this为当前元素
         alert($(this).attr("id"));
         }
         };
         if(typeof options === "string"){
         //用call改变被调用函数的this上下文
         fn[options].call(this);
         }   
         return $(this);
         }
         });
         var el = $("#divId");
         el.datagrid();
            //调用delete
         el.datagrid("delete");个人比较喜欢这种写法
      

  3.   

    +1,如果需要传参数的话,这样:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script src="jquery.js"></script>
    </head>
    <body>
    <table id="tableRating">
    <tbody>
    <tr>
    <td>★</td><td>★</td><td>★</td><td>★</td><td>★</td>
    </tr>
    </tbody>
    </table>
    <script>
    $.extend($.fn, {
                datagrid : function(){
                 var args = arguments;
                    //存放方法
                    var obj = {
                        "delete" : function(){
                            //this为当前元素
                            alert($(this).attr("id") + ", " + arguments[0]);
                        }
                    };
                    
                    if(typeof args[0] === "string"){
                     if(args.length === 1){
                        //用call改变被调用函数的this上下文
                        obj[args[0]].call(this);
                    }else{
                     var _args = [];
                     $.each(args, function(i, arg){
                     if(i > 0){
                     _args[i - 1] = arg;
                     }
                     });
                     obj[args[0]].apply(this, _args);
                    }
                    }   
                    return $(this);
                }
            });
            var el = $("#tableRating");
            //调用delete
            el.datagrid("delete", 'hello');
            </script>
    </body>
    </html>