jQuery: как отменить изменения, внесенные в DOM?

#jquery

#jquery

Вопрос:

Я изменил атрибут цены при выборе изменения.

Как я могу вернуть его к нормальной цене при условии else?

 jQuery( document ).ready(function( $ ) {
    $('#select_1').on('change', function() {
    var visit_time_val=$(this).val();

    if(visit_time_val==93 || visit_time_val==95)
    {
        var adult_price=26;
        var child_price=10;

        $('#select_15 option:nth-child(2)').attr("price",adult_price);
        $('#select_15 option:nth-child(3)').attr("price",adult_price*2);
        $('#select_15 option:nth-child(4)').attr("price",adult_price*3);
        $('#select_15 option:nth-child(5)').attr("price",adult_price*4);   

        $('#select_3 option:nth-child(2)').attr("price",child_price);   
        $('#select_3 option:nth-child(3)').attr("price",child_price*2);  
        $('#select_3 option:nth-child(4)').attr("price",child_price*3);  


    }
    else
    {
        //back to prices setted in db
    }
     });
});
 

Комментарии:

1. Не могли бы вы опубликовать коды, которые вы пробовали в блоке else?

Ответ №1:

Попробуйте это :

     var previous;

    $("#select_1").one('focus', function () {
        // Store the current value on focus and on change
        previous = this.value;
    }).change(function() {
        var visit_time_val=$(this).val();

    if(visit_time_val==93 || visit_time_val==95)
    {
        var adult_price=26;
        var child_price=10;

        $('#select_15 option:nth-child(2)').attr("price",adult_price);
        $('#select_15 option:nth-child(3)').attr("price",adult_price*2);
        $('#select_15 option:nth-child(4)').attr("price",adult_price*3);
        $('#select_15 option:nth-child(5)').attr("price",adult_price*4);   

        $('#select_3 option:nth-child(2)').attr("price",child_price);   
        $('#select_3 option:nth-child(3)').attr("price",child_price*2);  
        $('#select_3 option:nth-child(4)').attr("price",child_price*3);  


    }
    else
    {
        //back to prices setted in db
        $(this).val(previous );
    }
    });
 

Комментарии:

1. я хочу //вернуться к исходным #select_15 и #select_3

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

Ответ №2:

Вы можете сохранить значение в атрибутах данных тега Select, чтобы вы могли использовать это значение.

 <select id="select_1" data-selectedvalue="10">
<option>1</option>
<option>2</option>
<option>3</option>
<option selected>10</option>
</select>

jQuery( document ).ready(function( $ ) {
    $('#select_1').on('change', function() {
    var visit_time_val=$(this).val();

    if(visit_time_val==93 || visit_time_val==95)
    {
        var adult_price=26;
        var child_price=10;

        $('#select_15 option:nth-child(2)').attr("price",adult_price);
        $('#select_15 option:nth-child(3)').attr("price",adult_price*2);
        $('#select_15 option:nth-child(4)').attr("price",adult_price*3);
        $('#select_15 option:nth-child(5)').attr("price",adult_price*4);   

        $('#select_3 option:nth-child(2)').attr("price",child_price);   
        $('#select_3 option:nth-child(3)').attr("price",child_price*2);  
        $('#select_3 option:nth-child(4)').attr("price",child_price*3);  


    }
    else
    {
        $(this).val($(this).data("selectedvalue"));
    }
     });
});