2014-07-06 49 views
0

我想用PHP重新創建下面的JS。原因是編號的類和值實際上是從MySQL數據庫中提取的ID。我有一個報告創建區域,下面的代碼顯示並隱藏了該報告的規則。由於不同的報告具有不同的規則,因此它顯示並隱藏了取決於分組的規則,在下面的代碼中確定爲#rule_who。用PHP創建簡單的JS

當試圖重新創建以下我試圖使用while循環,但它變得非常荒謬。在JavaScript或AJAX中是否有更高效的方式來顯示和隱藏更適合使用大量div的div? 2,3,4等不應該是一個遞增的數字,因爲它依賴於ID,因此隨着報告被刪除,一些數字將隨着時間消失。

任何幫助,將不勝感激。謝謝

<script> 
//<![CDATA[ 
$(window).load(function(){ 
    $(".2").hide(); 
    $(".3").hide(); 
    $(".4").hide(); 
     $('#rule_who').on('change', function() { 

    if(this.value === "2"){ 
    $(".2").show(); 
    $(".3").hide(); 
    $(".4").hide(); 
    } else if(this.value === "3"){ 
    $(".2").hide(); 
    $(".3").show(); 
    $(".4").hide(); 
    } else if(this.value === "4"){ 
    $(".2").hide(); 
    $(".3").hide(); 
    $(".4").show(); 
    } else { 
    $(".2").hide(); 
    $(".3").hide(); 
    $(".4").hide(); 
    } 

}); 
});//]]> 

</script> 

編輯:謝謝大家的幫助。

我最終什麼了使用了以下內容:

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){ 

$("#rule_who").change(function() { 
    $("div.specific_rules").hide(); 
    var targetId = $(this).val(); 

    console.log($(targetId).html()); 
    // show the new selected one 
    $("#"+targetId).show(); 
}); 
});//]]> 

</script> 

回答

3

我認爲你可以這樣做:

$('.' + this.value).show(); 
$('.' + this.value).siblings().hide(); 
1

試試這個(FIDDLE EXAMPLE HERE):

$('.1, .2, .3').hide();  
$(window).load(function(){ 
     $('#rule_who').on('change', function() { 
      var elems = document.getElementsByTagName('div'); 
       for (var i = 0; i < elems.length; i++) { 
        if (elems[i].className != this.value) { 
         elems[i].style.display = 'none'; 
        } else { 
         elems[i].style.display = 'block'; 
        } 
       } 
     }); 
    });