2010-08-16 5 views
0

Je fais une recherche de véhicule sur notre site, vous sélectionnez la marque et ajax charge les modèles et remplit une boîte de sélection. Le problème est que je ne peux pas obtenir la boîte de sélection pour mettre à jour avec les options. J'ai essayé à la fois jQuery('> .model', container).replaceWith(html); et select.html(html); et aucun ne fonctionnera.jQuery .html() ne se met pas à jour?

Le code HTML est comme ça ...

<div class='vehicle-search'> 
    <select class='make'><-- options filled when page loads --></select> 
    <select class='model'></select> 
    <select class='year'></select> 
</div> 

jQuery:

jQuery().ready(function() { 
jQuery('.vehicle-search .make').bind('click', function (e) { 
    var makeId = jQuery(e.target).val(); 
    var container = jQuery(e.target).parent('.vehicle-search'); 
    var select = jQuery('> .model', container); 
    if (parseInt(makeId) > 0) { 
    jQuery.ajax({ 
    url: iKeyLess.internal.url + '/ajax/vehicle/make/getModelList.php', 
    type: 'post', 
    dataType: 'json', 
    success: function (r) { 
    if (r.length > 0) { 
     select.html(''); 
     jQuery('> .year', container).html(''); 

     var html = ''; 
     for (var i = 0; i < r.length; i++) { 
     html += "<option value='"+r[i].id+"'>"+r[i].name+"</option>"; 
     } 

     jQuery('> .model', container).replaceWith(html); 
    } else { 
     alert('We did not find any models for this make'); 
    } 
    }, 
    error: function() { 
    alert('Unable to process your request, ajax file not found'); 
    return false; 
    }, 
    data: { 
    makeId: makeId 
    } 
    }); 
    } else { 
    select.html(''); 
    jQuery('> .model', container).html(''); 
    jQuery('> .year', container).html(''); 
    } 
}); 
}); 

Répondre

3

Vos sélecteurs ne devraient pas commencer par >.
Par conséquent, ils ne correspondent à rien.

+0

j'ai vu que l'un des docs jQuery dans les commentaires, quelqu'un avait recommandé cette solution. Apparemment, c'est faux^_^ – Webnet

+0

@Webnet - Vous pouvez le faire '> .model' quand vous passez le' container' comme contexte. Voici un exemple: http://jsfiddle.net/Kf4hu/ – user113716

+0

@Patrick - c'est ce que j'ai fait et ça ne marcherait pas – Webnet

0

Utilisez jQuery('vehicle-container > select.model').html('...')

Questions connexes