私には2つの機能があります。最初にページにsvgをロードし、2番目<path>
にいくつかのsvgで特定の色を変更します。
この関数は次のようになります。
get_svg_part(category,position,part_name);
-- ajax を含む
svg_part_color(category,position,color,parameter);
-- get_svg_part() の後に実行する必要があります
svg をロードするだけで色を変更しない場合があります。別のケースでは、svg をロードしてその中のカップルの色を変更する必要があります。それが私が使用していないか、success
またはcomplite
ajaxである理由です。また、ページの読み込み時にそれを行う必要があるため、すべて(2つの関数と呼び出し)を前に置きます(jQuery(document).ready()
この情報が必要な場合)。
$.when
私はandでそれをやろうとしました.then
が、これは効果がありません:
$.when(get_svg_part('accent','bottom',' U+1F60A')).then(svg_part_color('accent','bottom','#FF7892',0));
たぶんsvg_part_color();
、ある意味で非同期にする必要がありますか?もしそうなら、どうやって?
質問:関数を次々に機能させる方法(ajaxリクエストを含む)?
これが次のように機能する場合はクールです。
get_svg_part('accent','bottom',' U+1F60A');
svg_part_color('accent','bottom','#FF7892',0);
$.when(get_svg_part()).then(svg_part_color()); // just set a rule and not execute function here
// or maybe put this rule in svg_part_color() function
更新: get_svg_part コード:
function get_svg_part(cathegory,position,part_name){
$.ajax({
url: "img/icons/parts/"+cathegory+"/"+position+"/"+part_name+".svg",
type: 'GET',
dataType: 'html',
success: function( data ){
let rate_block_rated = movie_block.find('.movie_rating.rated'); //rate_block_rated
let svg_symbol = rate_block_rated.find(".composite_rate svg ."+cathegory+"."+position);
// prepend (insert) data to svg_symbol (accent bottom),
// then find inserted svg, and delete svg tag (unwrap path)
svg_symbol.prepend(data).find('svg').children().unwrap();
}
});
};