what I do is use addOption see <a href="http://www.texotela.co.uk/code/
jquery/select/>here</a>

    $("#albums").addOption(data.albums, false);
my json response looks like this

{"albums":{"13":"Horses","10":"Lambs\/Sheep","12":"Cows","14":"Other
animals"}}

Mean Mike

On Jun 29, 10:13 am, Alexandre Magno <alexan...@gmail.com> wrote:
> Ricardo,
>
> The code it's still heavy, you are appending in each loop, this is not
> a good code pratice for perfomance and if you read the reference I
> passed, you will see that it's not so relevant. The code extract
> states, it can deal with a lot of data and the perfomance should be a
> item to consider...
>
> You should manipulate the dom as few as possible, in extreme case it's
> more faster append once the whole content that adding each part
> desired...
>
> The way you show, you should work with dom fragment 
> -http://ejohn.org/blog/dom-documentfragments/
>
> Regards,
>
> Alexandre Magno
> Interface Developerhttp://blog.alexandremagno.net
>
> On 27 jun, 19:26, Ricardo <ricardob...@gmail.com> wrote:
>
> > For adding a handful of options in a select performance is almost
> > irrelevant, it's more than fast enough. You can improve code
> > readability and performance (a bit) using the Option constructor:
>
> > $.post('/path/to/json.php', {params: 'xxx'}, function(data){
>
> >    var $select = $('#mySelectBox');
>
> >    $.each(data, function(){
> >        $select.append( new Option(this.State.name, this.State.name) );
> >    });
>
> > }, 'json');
>
> > On Jun 26, 2:56 pm, Alexandre Magno <alexan...@gmail.com> wrote:
>
> > > Hello,
>
> > > Yeah, thats right, the code works but it's too heavy
>
> > > You should concatenate one string with all option and then make a
> > > append. A append inside the loop would break the perfomance:
>
> > > > $.post('/path/to/json.php', {params: 'go here, if you need them'},
> > > > function(data){
> > > >     // "data" contains that JSON object you described
>
> > > >    // Also, I'm assuming your select box looks something like this:
> > > >    // <select id="mySelectBox"></select>
> > > >    var select = $('#mySelectBox');
> > > >    var options;
> > > >    if (data.length) $.each(data, function(){
> > > >     options += '<option 
> > > > value="'+this.State.name+'">'+this.State.name+'</option>';
> > > >    })
> > > >    $(options).appendTo( select );
>
> > > > }, 'json');
>
> > > Reference:http://www.learningjquery.com/2009/03/43439-reasons-to-use-append-cor...
>
> > > Regards,
>
> > > Alexandre Magno
> > > Interface Developerhttp://blog.alexandremagno.net
>
> > > On Jun 26, 11:59 am, Eric Garside <gars...@gmail.com> wrote:
>
> > > > Well, lets assume you're getting the JSON you described from the
> > > > following ajax call:
>
> > > > $.post('/path/to/json.php', {params: 'go here, if you need them'},
> > > > function(data){
> > > >     // "data" contains that JSON object you described
>
> > > >    // Also, I'm assuming your select box looks something like this:
> > > >    // <select id="mySelectBox"></select>
> > > >    var select = $('#mySelectBox');
> > > >    if (data.length) $.each(data, function(){
> > > >        $( '<option value="' + this.State.name + '">' + this.State.name
> > > > + '</option>').appendTo( select );
> > > >    })
>
> > > > }, 'json');
>
> > > > On Jun 26, 6:46 am, liaogz82 <liaog...@gmail.com> wrote:
>
> > > > > Hi all,
>
> > > > > I have this JSON file that does the encoding from the states database.
> > > > > I want to extract it out using jquery and populate the select drop
> > > > > down box. the json file is being encoded in this way:
>
> > > > > [
> > > > > {"State":{"name":"AUSTRALIA CAPITAL TERRITORY"}},
> > > > > {"State":{"name":"NEW SOUTH WALES"}},
> > > > > {"State":{"name":"NORTHERN TERRITORY"}},
> > > > > {"State":{"name":"QUEENSLAND"}},
> > > > > {"State":{"name":"SOUTH AUSTRALIA"}},
> > > > > {"State":{"name":"TASMANIA"}},
> > > > > {"State":{"name":"VICTORIA"}},
> > > > > {"State":{"name":"Western Australia"}}
> > > > > ]
>
> > > > > not very sure how to extract out the values. Please help me. Thanks!

Reply via email to