2016-07-05 181 views
0

我正在開發一個IBM項目,由於隱私原因,我無法向您顯示確切的內容。jQuery .show().hide()不起作用

我是JS和AngularJS的新手,對jQuery根本不瞭解。我想在相應的複選框被選中時顯示特定的div部分。我使用JS和AngularJS嘗試了這一點,但沒有結果。請查看代碼並請幫助我。此外,如果有任何方式使用JS/AngularJS理清問題(更優選,AngularJS),這將是一個容易得多

代碼:

var checkbox1 = $("#check1"); 
 
checkbox1.change(function(event) { 
 
    var checkbox1 = event.target; 
 
    if (checkbox1.checked) { 
 
    $("#userform2").show(); 
 
    } else { 
 
    $("#userform2").hide(); 
 
    } 
 
}); 
 
var checkbox2 = $("#check2"); 
 
checkbox2.change(function(event) { 
 
    var checkbox2 = event.target; 
 
    if (checkbox2.checked) { 
 
    $("#userform4").show(); 
 
    } else { 
 
    $("#userform4").hide(); 
 
    } 
 
}); 
 
var checkbox3 = $("#check3"); 
 
checkbox3.change(function(event) { 
 
    var checkbox3 = event.target; 
 
    if (checkbox3.checked) { 
 
    $("#userform5").show(); 
 
    } else { 
 
    $("#userform5").hide(); 
 
    } 
 
}); 
 
var checkbox4 = $("#check4"); 
 
checkbox4.change(function(event) { 
 
    var checkbox4 = event.target; 
 
    if (checkbox4.checked) { 
 
    $("#userform3").show(); 
 
    } else { 
 
    $("#userform3").hide(); 
 
    } 
 
}); 
 
var checkbox5 = $("#check5"); 
 
checkbox5.change(function(event) { 
 
    var checkbox5 = event.target; 
 
    if (checkbox5.checked) { 
 
    $("#userform6").show(); 
 
    } else { 
 
    $("#userform6").hide(); 
 
    } 
 
}); 
 
var checkbox6 = $("#check6"); 
 
checkbox6.change(function(event) { 
 
    var checkbox6 = event.target; 
 
    if (checkbox6.checked) { 
 
    $("#userform7").show(); 
 
    } else { 
 
    $("#userform7").hide(); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
 

 
<body id="ibm-com" class="ibm-type"> 
 
    <div id="ibm-top" class="ibm-landing-page"> 
 
    <div id="ibm-content-wrapper"> 
 
     <div class="ibm-columns"> 
 
     <div class="ibm-col-6-1">&nbsp;</div> 
 
     <div class="ibm-col-6-4"> 
 
      <form id="userform1" class="ibm-column-form" method="post" action=""> 
 
      <br /> 
 
      <h2 class="ibm-h2">Random Title 1</h2> 
 
      <p class="ibm-form-elem-grp"> 
 
       <label class="ibm-form-grp-lbl">Type of Request:</label> 
 
       <span class="ibm-input-group"> 
 
\t   <input id="check1" name="requestType1" type="checkbox" /> Checkbox #1 \t \t \t    
 
      \t <br /><input id="check2" name="requestType1" type="checkbox" /> Checkbox #2 
 
        <br /><input id="check3" name="requestType1" type="checkbox" /> Checkbox #3 
 
\t   <br /><input id="check4" name="requestType1" type="checkbox" /> Checkbox #4 
 
\t   <br /><input id="check5" name="requestType1" type="checkbox" /> Checkbox #5 
 
\t   <br /><input id="check6" name="requestType1" type="checkbox" /> Checkbox #6 
 
\t  </span> 
 
      </p> 
 
      <div id="userform2" class="ibm-column-form" hidden> 
 
       <br /> 
 
       <h2 class="ibm-h2">Random Title 2</h2> 
 
       <p> 
 
       Hello from Checkbox #1 
 
       </p> 
 
      </div> 
 
      <div id="userform3" class="ibm-column-form" hidden> 
 
       <br /> 
 
       <h2 class="ibm-h2">Random Title 3</h2> 
 
       <p> 
 
       Hello from Checkbox #4 
 
       </p> 
 
      </div> 
 
      <div id="userform4" class="ibm-column-form" hidden> 
 
       <br /> 
 
       <h2 class="ibm-h2">Random Title 4</h2> 
 
       <p class="ibm-form-elem-grp"> 
 
       Hello from Checkbox #2 
 
       </p> 
 
      </div> 
 
      <div id="userform5" class="ibm-column-form" hidden> 
 
       <br /> 
 
       <h2 class="ibm-h2">Random Title 5</h2> 
 
       <p> 
 
       Hello from Checkbox #3 
 
       </p> 
 
      </div> 
 
      <div id="userform6" class="ibm-column-form" hidden> 
 
       <br /> 
 
       <h2 class="ibm-h2">Random Title 6</h2> 
 
       <p> 
 
       Hello from Checkbox #5 
 
       </p> 
 
      </div> 
 
      <div id="userform7" class="ibm-column-form" hidden> 
 
       <br /> 
 
       <h2 class="ibm-h2">Random Title 7</h2> 
 
       <p> 
 
       Hello from Checkbox #6 
 
       </p> 
 
      </div> 
 
      <div id="userform8" class="ibm-column-form"> 
 
       <br /> 
 
       <h2 class="ibm-h2">Random Title 8</h2> 
 
       <p> 
 
       Bye 
 
       </p> 
 
       <br /> 
 
      </div> 
 
      </form> 
 
     </div> 
 
     <div class="ibm-col-6-1">&nbsp;</div> 
 
     </div> 
 
    </div> 
 
    </div>

+0

它看起來確定你能指望什麼? – guradio

+0

可能重複[如何顯示/隱藏基於角js中的複選框選擇div](http://stackoverflow.com/questions/21748594/how-to-show-hide-a-div-on-這個基礎的一個複選框選擇在角js) – Weedoze

+4

請閱讀這個[mcve]重點在最小 - 有很多重複的代碼,這可能存在於您的原始,但不有助於隔離潛在的問題。 –

回答

-5

我相信.change()現在已經死了,它應該是on("change", function(){}),而不是重複所有的代碼你可以使用$.each聲明。給我5分鐘,我會寫點東西。

你可以寫這樣的事情,如果你想這樣做jQuery中:

$('input[type="checkbox"]').on('change', function() { 
    var checkboxID = $(this).attr('id'); 
    $('[data-id="' + checkboxID + '"]').toggle(); 
}); 

和所有你需要做的是添加相同的ID上的複選框的形式作爲數據-ID。 E.G:

<input id="check6" name="requestType1" type="checkbox" /> 

<div id="userform6" class="ibm-column-form" hidden data-id="check6"> 
    <br /> 
    <h2 class="ibm-h2">Random Title 2</h2> 
     <p> 
      Hello from Checkbox #1 
     </p> 
</div> 

這將節省您不必重複您的代碼。

+7

您有什麼證據證明'.change'已過時? –

+0

'.change'不適用於動態添加的元素。對於這種用例,推薦使用'.on'或'.bind'。但是如果你有一個靜態元素,你可以使用'.change'。作爲參考:http://elijahmanor.com/differences-between-jquery-bind-vs-live-vs-delegate-vs-on/ – Rajesh

+0

剛剛檢查過文檔,我誤以爲.load,.unload等變化。在jQuery 3.0中。 –

1

下面是如何隱藏/顯示鏈接複選框div的簡單示例。

兩個div - 每個鏈接到其複選框。

HTML

<input type="checkbox" id="check1" name="Checkbox1" ng-model="checkbox1" /> 
<input type="checkbox" id="check2" name="Checkbox2" ng-model="checkbox2" /> 

<div ng-show="checkbox1"> 
    <h1>This div is shown thanks to checkbox #1</h1> 
</div> 

<div ng-show="checkbox2"> 
    <h1>This div is shown thanks to checkbox #2</h1> 
</div> 

Working JSFiddle

0

對於一個jQuery的解決方案,這將工作:jsFiddle

$("input[type=checkbox]").on("change", function() { 
    var numericId = $(this).attr("id").replace("check",''); 
    if ($(this).is(":checked")) { 
     $("#userform" + numericId).show(); 
    } else { 
     $("#userform" + numericId).hide(); 
    } 
});