我试图隐藏并根据是否选中复选框显示区域。我尝试了一些选项,但是这个区域一直都是可见的,或者它一直都是隐藏的。
JavaScript:
$(document).ready(function () {
var mgift = $('#chkbxMGift input[type=checkbox]');
MshowHide();
mgift.change(function () {
MshowHide();
});
});
function MshowHide() {
var mgift = $('#chkbxMGift input[type=checkbox]');
var shcompany = $('#shcompany');
if (mgift.checked) {
shcompany.show();
} else {
shcompany.hide();
}
}
HTML:
<li>
<div class="info">
<asp:CheckBox ID="chkbxMGift" runat="server" Text="A matching gift will be made" ClientIDMode="Static"/>
</div>
</li>
<li id="shcompany">
<div class="info">
<label for="txtCompanyName">Company Name</label>
<asp:TextBox runat="server" ID="txtCompanyName" CssClass="narrow" />
</div>
<div class="info">
<label for="txtCompanyPhone">Company Phone Number</label>
<asp:TextBox runat="server" ID="txtCompanyPhone" CssClass="narrow" />
</div>
</li>
如何才能正常运作?
答案 0 :(得分:8)
试试此代码
$(document).ready(function () {
$('#chkbxMGift').click(function () {
var $this = $(this);
if ($this.is(':checked')) {
$('#shcompany').hide();
} else {
$('#shcompany').show();
}
});
});
希望它能解决您的问题
答案 1 :(得分:3)
你的选择器错了。
var mgift = $('#chkbxMGift input[type=checkbox]');
这意味着您从父input
中选择了子节点#chkbxMGift
。
我相信这是你需要的选择器:
var mgift = $('input#chkbxMGift[type=checkbox]');
以下是对您的代码的一些改进:
$(document).ready(function () {
var mgift = $('input#chkbxMGift[type=checkbox]');
var shcompany = $('#shcompany');
// check for default status (when checked, show the shcompany)
if (mgift.attr('checked') !== undefined){
shcompany.show();
} else {
shcompany.hide();
}
// then simply toggle the shcompany on every change
mgift.change(function(){
shcompany.toggle();
});
});
jQuery的toggle非常有用,并且在1.0版中添加了,所以你应该能够使用它。
这是jsFiddle中的概念证明,只有最低限度:
答案 2 :(得分:1)
这是从this回答:
中被盗的$('.wpbook_hidden').css({
'display': 'none'
});
alert($(':checkbox:checked').attr('id'))
$(':checkbox').change(function() {
var option = 'wpbook_option_' + $(this).attr('id');
if ($('.' + option).css('display') == 'none') {
$('.' + option).fadeIn();
}
else {
$('.' + option).fadeOut();
}
});
在你问你之前搜索类似的问题。如果这可以解决您的问题,请给原作者
答案 3 :(得分:0)
您是否尝试过直接更改CSS?如
document.getElementById("shcompany").style.display="none";
或
document.getElementById("shcompany").style.visibility="hidden";
(或“可见”)
答案 4 :(得分:0)
为什么在简单的CSS属性更改可以解决问题时使用JQuery?
只需更改div的类或修改它的样式:
如果您希望占用空间,即使隐藏,请使用visibility:hidden
(分别为visibility:visible
)
如果您希望 NOT 在隐藏时占用空间,请使用css display:none
(分别为display:block
)