参数.replace()两次jQuery插件不起作用

时间:2016-10-04 15:18:07

标签: javascript jquery replace jquery-plugins

我正在编写带参数的jQuery插件,但我无法设置两个参数。

jsfiddle

(function($) {
    $.fn.ototypo = function(options) {
        var defauts = {
            'aaa': true, // ON/OFF ponctuation 
            'bbbccc': true // ON/OFF parenthese
        };
        var parametres = $.extend(defauts, options);

        return this.each(function() {
            var aaa = $(this).html().replace(/a/g, "aaa");
            var bbbccc = $(this).html().replace(/b/g, "bbb").replace(/c/g, "ccc");

            if (parametres.aaa) {
                $(this).html(aaa)
            }

            if (parametres.bbbccc) {
                $(this).html(bbbccc)
            }
        });
    };
})(jQuery);

$('p').ototypo();

在此示例中,我有两个函数,一个将a更改为aaa,另一个将b更改为bbbc更改为{{1我希望能够同时启用名为cccaaa的功能。如果我将bbbccc设置为功能,则只有最后一个似乎有效。我需要禁用一个启用另一个,反之亦然。

1 个答案:

答案 0 :(得分:0)

//Method creates a httpPost such as a json file public static void createRequest(StringEntity params, String[][] headers, String url) { HttpClient client = HttpClientBuilder.create().build(); try { HttpPost request = new HttpPost(url); for(String[] header: headers) { request.addHeader(header[0], header[1]); } request.setEntity(params); HttpResponse response = client.execute(request); System.out.println(response.toString()); } catch(Exception e) { e.printStackTrace(); } } 的最后一次调用会覆盖之前对html的调用,因为您只替换原始HTML,否则会丢失prevoius替换等。

html
(function($) {
    $.fn.ototypo = function(options) {

        var defauts = {
            'aaa': true, // ON/OFF ponctuation 
            'bbbccc': true // ON/OFF parenthese
        };

        var parametres = $.extend(defauts, options);

        return this.each(function() {
        
            var html = $(this).html();
            
            if (parametres.aaa) {
                html = html.replace(/a/g, "aaa");
            }
            
            if (parametres.bbbccc) {
                html = html.replace(/b/g, "bbb").replace(/c/g, "ccc");
            }
            
            $(this).html(html)
        });
    };
})(jQuery);

$('p').ototypo();

应该注意的是,你的方法将删除所有外部事件处理程序和jQuery存储的与元素相关的任何数据,并且它不适用于与传入的选择器等匹配的嵌套元素。