2014-01-27 39 views
0

我遇到的問題只存在於Safari中,但適用於所有其他瀏覽器。jQuery .hide()函數在Safari中不起作用

我有一個下拉框填充了從數據庫中拉出的類別,每個類別都具有「活動」或「非活動」屬性。當頁面加載時,它將只顯示活動的類別。我旁邊的下拉菜單中選中時,也將顯示非活動類別,使用下面的jQuery的一個複選框:

$(document).ready(function() { 
$('.inactive').hide(); 
$('input[type=checkbox]').click(function(){ 
    var $this = $(this); 
    if($this.is(':checked')) 
    { 
     $('.inactive').show(); 
    } 
    else 
    { 
     $('.inactive').hide(); 
    } 
}); 

});

的下拉框中的HTML本質上是(只有幾個選項):

<form action="action" method="post"> 
<div class="label"> 
<span class="cats">Category:</span><select name="category_title" > 
<option style="display: none;" class="inactive" value="1">Option1</option> 
<option style="display: none;" class="inactive" value="23">Option2</option> 
<option value="37">Option3</option> 
<option value="45">Option4</option> 
<input class='view' type='submit' name='select' value='Select' /> 
</div> 
</form> 

這在所有的瀏覽器除了完美的作品從Safari瀏覽器,它會自動顯示不活動的類別,也不會隱藏。

編輯: 看着安地列斯鏈接,並改變了jQuery後:

$(document).ready(function() { 
var inactive = $('.inactive').detach(); 
$('input[type=checkbox]').click(function(){ 
    var $this = $(this); 
    if($this.is(':checked')) 
    { 
     $('#category').append(inactive); 
    } 
    else 
    { 
     $('.inactive').detach(); 
    } 
}); 

});

好吧我現在有這個工作。它將分離不活動的類別並將其附加到所有瀏覽器中。一個新問題並沒有出現:這些類別都屬於這個下拉框中的主要類別,但是當它被追加時,它將所有不活動的類別添加到底部主類別中,而不是以任何順序...

+0

你能後置HTML,而不是PHP? (在呈現的頁面上執行「查看源代碼」)。另外,你是否在控制檯中有任何錯誤(如果Safari有一個???) – Archer

+0

它實際上應該工作..使用'$('。inactive').css('display','none');' –

+0

[$(「#id option」)。hide();不工作safari /鉻?](http://stackoverflow.com/questions/9813047/id-option-hide-not-working-on-safari-chrome) – Andreas

回答

0

而是採用

$('input[type=checkbox]').click(function(){ 
}); 

使用

$(document).on('click','input[type=checkbox]',function(){ 
}); 
相關問題