2017-09-05 64 views
0

正如標題所描述的,我在選擇框和在iOS Safari上觸發更改事件時遇到問題。 我有下面的代碼:jQuery選擇更改在iOS上每隔一次觸發

$thisPage.find('select#id-attribute').on('change', function (e) { 
    var theId = $(this).val(); 

    $thisPage.find('.place-where-options-get-populated').empty(); 

    if (theId != '') { 
     $.ajax({'type': 'GET', 'url': '/the-actual-url'+ theId, 'dataType': 'json'}) 
      .done(showTemplate) 
      .fail(function(jqXHR, textStatus, errorThrown) { 

      }) 
    } else { 
     showTemplate({}); 
    } 

}).trigger('change'); 

上面的代碼工作在桌面瀏覽器的罰款-the輸出選項,每個變化事件 - 發生相應的變化,而iOS上的選項只改變每一秒的時間(適用於第一個變化,不在第二個,在第3個工作,不在第4個,等等)。 我正在使用jQuery v3.2.1

正確的方向指南將受到高度讚賞。

編輯: showTemplate()函數基本上是我正在做的服務器的請求,並在下面的(這與我的問題做部分)結束:

$thisPage.find('.place-where-options-get-populated').html(theItems); 

現在,如果在'theItems'上做一個console.log,它總是返回它應該返回的內容。此外,內容實際上被添加到適當的容器中,只是它不會顯示在頁面上。

+0

ajax請求上的showTemplate做什麼 –

+1

對你有用的鏈接https://stackoverflow.com/questions/5960731/strange-behavior-of-select-dropdowns-onchange-js-event-when-using-next- on-m – PraveenKumar

+0

@lgkarolos - 請參閱我的文章的編輯部分。 – Seb

回答

0

好的,所以我通過在showTemplate()函數的最後一位添加hide()和show()來解決此問題。所以它看起來像這樣:

$thisPage.find('.place-where-options-get-populated').hide().html(theItems).show(); 

基本上,問題在於那裏的html()函數。

可能不是理想的解決方案,但它會完成這項工作。