Событие изменения jQuery хорошо работает на ПК, но оно не работает на iOS

#javascript #html #jquery #flask

#javascript #HTML #jquery #flask

Вопрос:

Я создаю веб-приложение на Flask, и событие изменения jQuery хорошо работает в веб-браузере на ПК, но не работает в браузере iOS.

Вот get_new_recipe_category.js . Всякий раз, когда выбирается категория, в разделе рецептов будет отображаться только соответствующий рецепт. В настоящее время все рецепты отображаются на iOS независимо от выбора категорий.

 $(document).ready(function() {
    var select_category = $('.new-recipe-category')

    select_category.on('change', function(){

        var count = $('.new-recipe').children().length
        for (var i=0; i<count; i  ) {
            var recipe = $('.new-recipe option:eq('   i   ')');
            if (select_category.val() === recipe.attr('data-category')) {
                recipe.show();
            } else {
                if (recipe.attr('data-category') === "0") {
                    recipe.show()
                    recipe.prop('selected',true)
                } else{
                    recipe.hide()
                }
            }
        }
    });

} );

 

Вот новое _event.html

 <div class="form-row">
  <div class="form-group col-md-6">
    <label class="form-control-label" for="category_id">Category</label>
      <div class="border">
        <select class="new-recipe-category form-control form-control-lg" id="category_id" name="category_id">
          <option value="0">---</option>
          <option value="1">Chicken</option>
          <option value="2">Rice</option>
          <option value="3">Lamb</option>
        </select>
     </div>
    </div>
    <div class="form-group col-md-6">
      <label class="form-control-label" for="recipe_id">Recipe</label>
        <div class="border">
         <select class="new-recipe form-control form-control-lg" id="recipe_id" name="recipe_id">
          <option data-category="0" value="0">---</option>
          <option data-category="1" value="1" style="display: none;">Grilled Chicken</option>
          <option data-category="1" value="234" style="display: none;">Teriyaki Chicken</option>
          <option data-category="2" value="2" style="display: none;">White rice</option>
          <option data-category="3" value="3" style="display: none;">Grilled Lamb</option>
        </select>
       </div>
   </div>
</div>
 
 <script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
<script type="text/javascript" src="/static//js/get_new_recipe_category.js"></script>
 

Не могли бы вы дать мне какие-либо предложения?

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

1. Почему вы призываете e.preventDefault(); к событию перемен ?

2. Оно использовалось для тестирования, но уже было удалено, и результат остался прежним.

Ответ №1:

Я обнаружил, что проблемы заключались в hide () и show (), которые не работают в мобильном браузере. Поэтому он изменился на wrap(«) и unwrap(), а затем заработал сейчас.