【发布时间】:2013-05-07 01:09:15
【问题描述】:
这是我想要发生的事情:当我点击imageContainer div 中的复选框时,复选框应该显示为选中状态。我还添加了一些类来更改选定框的背景颜色和标签颜色。这部分正在工作。
我可以单击imageContainer div 并且该div 内的复选框被选中。但是当我直接单击复选框时,它不会在框中显示复选标记。我试过preventDefault、return false 和stopPropagation,但没有运气。
<div class="imageContainer" id="question-container-7571">
<img src="/rfs/servicerequest/taskImages/flooring_kitchen.jpg" alt="Flooring">
<div class="l-top-space">
<label for="id_7571_11491">Flooring</label>
<div class="l-right"><input id="id_7571_11491" type="checkbox" name="7571" value="11491"></div>
<input id="id_7571_11492" type="hidden" name="7571" value="11492">
</div>
</div>
这是我正在使用的 jQuery:
jQuery('.imageContainer').toggle(
function(e) {
var imgCont = jQuery(this);
imgCont.find('input').prop('checked', true);
imgCont.addClass('ic-checked');
imgCont.find('label').addClass('ic-selected');
},
function(e) {
var imgCont = jQuery(this);
imgCont.find('input').prop('checked', false);
imgCont.removeClass('ic-checked');
imgCont.find('label').removeClass('ic-selected');
}
);
任何关于我所缺少的帮助或提示都会很棒!
【问题讨论】:
-
很抱歉没有给你答案,但我只想给你两个想法:1.我怀疑你不能用
toggle功能做到这一点,2.你不无论如何,它已经从最新版本的 jQuery 中消失了。 :-) -
一种解决方案可能是将
<input type="checkbox"...放在要单击的div之外,然后将其绝对定位在正确的位置。为此,您可能需要一个包装 div。 -
你为什么要使用toggle?你想要一个点击事件反应,对吧?
-
我尝试使用 2 种不同版本的代码...一种使用切换,另一种使用更改。使用切换的代码似乎具有我需要的更多功能。使用 Change,我没有得到我需要发生的一切。但是,我今天研究得越多,我学到的东西就越多,比如切换被弃用等等。因此,我正在努力消除切换并使用 Click 或 Change 重写代码。
-
@Steeven:曾经有一个版本的
toggle连接了两个事件处理程序(每隔一个点击一个);详细信息:api.jquery.com/toggle-event 在 1.8 中已弃用并在 1.9 中删除。