2014-05-14 2 views
2

a un html généré dynamiquement, il y a un élément de sélection sur celui-ci. Nous pourrions choisir une option à l'intérieur, et cela fonctionne très bien.jQuery.html() supprimera l'attribut sélectionné de l'option de sélection

tout comme:

<div id="test"> 
    <select> 
     <option value="1">1</option> 
     <option value="2" selected="selected">2</option> 
    </select> 
</div> 

Ensuite, essayez d'utiliser:

var htmlstr= jQuery("#test").html(); 
alert(htmlstr); 

pour obtenir la chaîne html. Dans IE c'est OK. Mais en chrome (version la plus récente), l'attribut sélectionné de l'option est supprimé de la chaîne. les retours d'alerte (HTMLstr) résultat comme celui-ci:

<div id="test"> 
    <select> 
     <option value="1">1</option> 
     <option value="2">2</option> 
    </select> 
</div> 

Le selected = "selected" manque.

J'utilise Je ne sais pas jquery-1.9.1.min.js

il problème de jquery ou le problème de chorme.

merci beaucoup! Ou Comment puis-je obtenir le code HTML ci-dessus d'une autre manière? Je dois l'enregistrer dans la base de données.

vôtre, Ivan

+0

[Fiddle] (http://jsfiddle.net/cse_tushar/V344S/) fonctionne bien dans la version Chrome '34.0.1847.131 m' et aussi dans' 34.0.1847.137 m' –

+0

Je reçois le html correctement dans le chrome. Vérifiez ce violon http://jsfiddle.net/NuYN8/. Aucune modification effectuée, mais cela fonctionne correctement –

+0

Quelle version du chrome est utilisée? Pour moi cela fonctionne correctement dans la version chrome 34.0.1847.131 m. http://jsfiddle.net/XLULL/ –

Répondre

0

J'ai finalement trouvé le problème. C'est mon incompris du comportement de l'élément. J'avais pensé que lorsque je sélectionne un élément, il marque automatiquement l'option que j'ai sélectionnée comme "selected = seleted". Ce n'est pas le cas.

I I changé le code html comme:

<select id='conditionpref"+connum+"' style='width:65px;' onchange ='javascript:return changeconditionpref.apply(this);' name=''><option value='0'>0</option><option value='1'>1</option></select> 

et définir le code js comme:

function changeconditionpref() 
{ 
var id=jQuery(this).attr("id"); 
    jQuery("#"+id+" option:selected").attr('selected','selected'); 
} 

Maintenant, le problème a disparu.

Merci à tous!

vôtre, Ivan

1

Le code fonctionne très bien dans le dernier Chrome dans chaque version unique de jQuery. Je l'ai testé Je me attends à l'alerte à la sortie que la sélection, sans div parent ... et c'est ce que les sorties jsFiddle suivantes:

$(function() { 
    var div = $('<div id="test"/>'), 
     opt = $('<option/>'); 
    $('<select/>').html(opt.clone().val(1).text(1)) 
    .append(opt.clone().val(2).text(2).attr('selected','selected')) 
    .appendTo(div.appendTo('body')); 
    console.log($('#test').html()); 
}); 

http://jsfiddle.net/fiddleyetu/886Y3/

sortie:

<select><option value="1">1</option><option value="2" selected="selected">2</option></select> 

Note: Veuillez vérifier que vous n'avez pas un autre élément sur la page avec le même id = "test". Si tel est le cas, les résultats du navigateur sont incohérents, car il n'y a aucune garantie que différents navigateurs traitent le HTML non valide de la même manière.

Questions connexes