2014-05-08 2 views
1

Рассмотрите следующее, я пытаюсь изменить параметры, отображаемые выбором, основанным на выборе, который пользователь делает, в его самом базовом коде кода для выполнения чего-то подобного выглядит следующим образом :jquery удаляет мои html selects

HTML

<select id="ddlExpedientes" class="drop-down"> 
    <option value="imagen1.txt">1</option> 
    <option value="imagen2.txt">2</option> 
</select> 

<select id="ddlExpedientesPension" class="drop-down"> 
    <option value="imagen1.txt">1</option> 
    <option value="imagen2.txt">2</option> 
</select> 

<select id="ddlExpedientesHistoria" class="drop-down"> 
    <option value="imagenb1.txt">b1</option> 
    <option value="imagenb2.txt">b2</option> 
</select> 

<select id="ddlExpedientesSalario" class="drop-down"> 
    <option value="imagenc1.txt">c1</option> 
    <option value="imagenc2.txt">c2</option> 
</select> 

<a id="pension">pension</a> 
<a id="historia">pension</a> 
<a id="salario">pension</a> 

JS

$("a").click(function(){ 
    var that = $(this); 
    var drop = $('#ddlExpedientes'); 

    if(that.attr("id") =="pension") 
    { 
     var options = $("#ddlExpedientesPension option"); 
     drop.empty().append(options); 

     //drop.append(options); 

    } 

    if(that.attr("id") =="historia") 
    { 
     var options = $("#ddlExpedientesHistoria option"); 
     drop.empty().append(options); 

     //drop.append(options); 
    } 

    if(that.attr("id") =="salario") 
    { 
     var options = $("#ddlExpedientesSalario option"); 
     drop.empty().append(options); 

     //drop.append(options); 
    } 
}); 

вы видите, у меня есть 3 выбора, каждый из которых представляет «источник» информации, но независимо от того, что я делаю, «источник» для выбранных ящиков, которые я хочу отобразить, удаляется после каждой «вставки» в основную выберите, что делает невозможным выбор источника более одного раза.

Я просто не знаю, что делать или почему это происходит; и чтобы все было хуже, у меня действительно похожий код на моем приложении, и у меня никогда не было этой проблемы. поэтому мои вопросы: «Что не так с этим кодом?», почему он делает то, что делает? и кто это исправить? ,

Пример FIDDLE

http://jsfiddle.net/r86KE/3/

ответ

3

Вы должны clone() в option элементы, прежде чем вы добавить их, чтобы вы присоединяя копию, а не оригинальный элемент:

drop.empty().append(options.clone(true)); 

Example fiddle

Не e, что вы также можете СУХОЙ, чтобы код обновлялся путем повторной обработки повторяющихся функций в функции и передачи изменяемых частей в качестве параметров.

+0

Спасибо большое, yeahy, читал немного больше документации о .append(), и, как выясняется, это «Moves» элементы, если имеется только 1 цель по какой-то причине не делает этого по моему другому коду, когда я делаю почти то же самое, что и для СУШКИ кода, это всего лишь «тестовый» код, чтобы попытаться сузить проблему, не повод для того, чтобы быть ленивый, но просто сказал, что код не был конечным продуктом;), Большое спасибо за вашу помощь: D. –

+0

Без проблем, рад помочь –

1

Вы должны поймать html.

так:

$("a").click(function(){ 
    var that = $(this); 
    var drop = $('#ddlExpedientes'); 

    if(that.attr("id") =="pension") 
    { 
     var options = $("#ddlExpedientesPension").html(); 
     drop.empty().append(options); 

     //drop.append(options); 

    } 

    if(that.attr("id") =="historia") 
    { 
     var options = $("#ddlExpedientesHistoria").html(); 
     drop.empty().append(options); 

     //drop.append(options); 
    } 

    if(that.attr("id") =="salario") 
    { 
     var options = $("#ddlExpedientesSalario").html(); 
     drop.empty().append(options); 

     //drop.append(options); 
    } 
}) 
+0

Никогда не думал об использовании HTML(), как это, спасибо, тем не менее, я нашел решение Rory более элегантным. –

Смежные вопросы