2

2 つの jQuery 用のプラグインを作成しました。最初にデータを受け取り、追加します

1.

$(function () {

    $.fn.mlData = function(params,callback) {

        $.getJSON(params.url, function(result) {
            callback(result,add);
        });

        function add (dataValue,dataText,dataName) {
            $(mlThis).append('<option dataName="'+dataName+'" value="'+dataValue+'">'+dataText+'</option>');
        }
    }

});

そしてそれを使う

$('#select').mlData({
    url:'ajax.php',
},function (result,add) {
    $.each(result.regions,function(k,v) {
        add(v.id,v.region,'region');
        if(v.cities.length > 0) {
            $.each(v.cities, function(i,c) {
                add(c.id,c.name,'city');
            });
        }
    });
}); 

それは機能しますが、同じ要素を処理するための2つのプラグインですが、新しいデータを使用します

プラグイン 2

$.fn.mlSelector = function(params) { 
    $('option',this).each(function() {  
        alert($(this).text());  
    }); 
};

動作しません、2 番目のプラグインを呼び出しますが、新しいプラグインが表示されません

$('#ss').mlData({
    url:'ajax.php',
},function (result,add) {
    $.each(result.regions,function(k,v) {
        add(v.id,v.region,'region');
        if(v.cities.length > 0) {
            $.each(v.cities, function(i,c) {
                add(c.id,c.name,'city');
            });
        }
    });
}); 

$('#ss').mlSelect(); // NOT WORK :(
4

2 に答える 2

0

最初のプラグインのコールバックで 2 番目のプラグインを使用する必要があります。

$('#ss').mlData({
    url:'ajax.php',
},function (result,add) {
    $.each(result.regions,function(k,v) {
        add(v.id,v.region,'region');
        if(v.cities.length > 0) {
            $.each(v.cities, function(i,c) {
                add(c.id,c.name,'city');
            });
        }
    });

    $('#ss').mlSelect();
}); 
于 2012-12-22T10:42:28.580 に答える