2012-10-12 20 views
0

我已經嘗試在上面的每個循環運行之後運行List_Sandbox函數,並且不得不使用它。每個循環都選擇一組複選框,然後觸發一個更改事件,該事件呈現需要選擇的其他複選框。 List_Sandbox函數正在做選擇,但在我的腳本可以加載其他新複選框之前正在運行。我怎樣才能看到這一點?我嘗試過,.load,.on和livequery,都沒有工作。請幫助...如何在元素加載後運行函數?

$.each(zone_array, function(index, zone){ 
    $("ul.zones li input[id='"+zone+"']").attr("checked", "checked").trigger("change"); 
}); 
List_Sandbox.select_districts_versions(district_array); 
List_Sandbox.select_stores_versions(store_array); 


function data_for_districts(zoneid) { 
      $.getJSON('/CampaignMgmt/GetDistrictsByZone', {'clientid': clientid, 'zone': zoneid }, function(data){ 
       $.each(data, function(index, value){ 
        $("span.notice_district").remove(); 
        var zone = value.toString().substring(0, 1); 
        var li_tag = '<li zone="'+zoneid+'" class="'+ value +'"style="display: list-item; "><label><input id="'+value+'" data-id="'+value+'" data-parent-id="'+zone+'" type="checkbox" name="zone_101" value="' + value + '"><span>'+ value +'</span></label></li>'; 
        $("ul.districts").append(li_tag); 
        $('ul.districts li input[id="'+value+'"]').change(function(){ 
         Districts.selection(value); 
         Districts.count_districts(); 
        }); 
       }); 
      }); 
    } 
+0

更改事件到底做了什麼?如果你也包含了代碼,這將會很有幫助。 –

+0

改變事件註冊了一個我希望檢查的地區的複選框列表呼叫 – user1074316

回答

0

這不是很清楚你的代碼,追加複選框正在做,但你可以嘗試以下方法:如果使用應該使用prop()方法而不是attr()

var arr_length = zone_array.length; 
$.each(zone_array, function(index, zone) { 
    $("ul.zones li input[id='" + zone + "']").attr("checked", "checked").trigger("change"); 

    /* run the List_Sandbox functions after last item */ 
    if (index == arr_length - 1) { 
     List_Sandbox.select_districts_versions(district_array); 
     List_Sandbox.select_stores_versions(store_array); 
    } 
}); 

編輯jQuery> = 1.6

+0

將prop()觸發一個改變事件?或者我需要這樣做再次使用.trigger()? – user1074316

+0

no ..使用'trigger()'就像你正在做的那樣。只需將attr()部分更改爲'.prop('checked',true)' – charlietfl

+0

剛剛檢查....它不 – user1074316

相關問題