我想仅在选中复选框时显示文本区域,并在未选中复选框时隐藏文本区域。但是当选中某些复选框时,我当前的代码会显示所有文本区域。 textarea和checkbox是动态生成的,因此可以有任意数量的checkbox和textarea。
基本上,我想要做的是在复选框事件上切换文本区域。
$( document ).ready(function() {
$(".with-us").hide();
$(".with-other").hide();
$('textarea[name="shopDescription"]').hide();
$("#work-option :radio").change(function () {
var workType = $('input[name=work]:checked').val();
if (workType == "wc") {
$(".with-other").hide();
$(".with-us").show();
} else if (workType == "woc") {
$(".with-us").hide();
$(".with-other").show();
} else {
$(".with-us").hide();
$(".with-other").hide();
}
});
$(document).on('click', 'input[name="shop"]', function () {
if (this.checked) {
$('textarea[name="shopDescription"]').show();
} else {
$('textarea[name="shopDescription"]').hide();
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="work-option">
<label>Show your work: </label>
<div class="options">
<input type="radio" name="work" value="wc">
With us
<input type="radio" name="work" value="woc">
With other
</div>
</div>
<div class="with-us">
<input type="hidden" name="withus" id="withus">
<input id="work1" type="checkbox" name="shop" value="test1">
Work 1
<textarea id="test1Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work2" type="checkbox" name="shop" value="test2">
Work 2
<textarea id="test2Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work3" type="checkbox" name="shop" value="test3">
Work 3
<textarea id="test3Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work4" type="checkbox" name="shop" value="test4">
Work 4
<textarea id="test4Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work5" type="checkbox" name="shop" value="test5">
Work 5
<textarea id="test5Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work6" type="checkbox" name="shop" value="test6">
Work 6
<textarea id="test6Description" placeholder="Description" name="shopDescription"></textarea>
</div>
<div class="with-other">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
最佳答案
选择器 $('textarea[name="shopDescription"]').hide();
选择所有文本区域。
相反,搜索 next()
文本区域:
$(document).ready(function() {
$(".with-us").hide();
$(".with-other").hide();
$('textarea[name="shopDescription"]').hide();
$("#work-option :radio").change(function() {
var workType = $('input[name=work]:checked').val();
if (workType == "wc") {
$(".with-other").hide();
$(".with-us").show();
} else if (workType == "woc") {
$(".with-us").hide();
$(".with-other").show();
} else {
$(".with-us").hide();
$(".with-other").hide();
}
});
$(document).on('click', 'input[name="shop"]', function() {
if (this.checked) {
$(this).next('textarea').show();
} else {
$(this).next('textarea').hide();
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="work-option">
<label>Show your work: </label>
<div class="options">
<input type="radio" name="work" value="wc"> With us
<input type="radio" name="work" value="woc"> With other
</div>
</div>
<div class="with-us">
<input type="hidden" name="withus" id="withus">
<input id="work1" type="checkbox" name="shop" value="test1"> Work 1
<textarea id="test1Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work2" type="checkbox" name="shop" value="test2"> Work 2
<textarea id="test2Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work3" type="checkbox" name="shop" value="test3"> Work 3
<textarea id="test3Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work4" type="checkbox" name="shop" value="test4"> Work 4
<textarea id="test4Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work5" type="checkbox" name="shop" value="test5"> Work 5
<textarea id="test5Description" placeholder="Description" name="shopDescription"></textarea>
<input id="work6" type="checkbox" name="shop" value="test6"> Work 6
<textarea id="test6Description" placeholder="Description" name="shopDescription"></textarea>
</div>
<div class="with-other">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
替代方案
你可以稍微简化你的 jQuery:
$(document).on('click', 'input[name="shop"]', function() {
$(this).next('textarea').toggle(this.checked);
});
关于javascript - 仅显示选中复选框的文本区域,未选中时隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46599398/