我有一个表单设置,因此当您选中一个复选框时,相关的 UL 将根据选择展开显示更多选项。它有效,但仅当用户单击复选框的标签时。如果单击该复选框,则 UL 会按预期展开,但不会选中该框。
Javascript:
jQuery(document).ready(function()
{
jQuery('.toggleUL').click(function()
{
var checkbox = jQuery(this).find('input');
var ul = jQuery(this).next('ul');
if (ul.css('display') == 'block') { ul.find('input').attr('checked', false); }
if (checkbox.attr('checked') == false)
{
checkbox.attr('checked', true);
}
else
{
checkbox.attr('checked', false);
}
ul.slideToggle('slow'); return false;
});
});
HTML:
<label class="toggleUL"><input style="margin-right: 10px" type="checkbox" name="quoteWebsite" id="quoteWebsite" value="xxx" />xxx</label>
<ul style="list-style-type: none; display: none">
<li style="margin-left: 20px"><label><input style="margin-right: 10px" type="checkbox" name="quoteWebsite1[]" id="quoteWebsite1" value="xxx" />xxx</label></li>
<li style="margin-left: 20px"><label><input style="margin-right: 10px" type="checkbox" name="quoteWebsite1[]" id="quoteWebsite2" value="xxx" />xxx</label></li>
<li style="margin-left: 20px"><label><input style="margin-right: 10px" type="checkbox" name="quoteWebsite1[]" id="quoteWebsite3" value="xxx" />xxx</label></li>
</ul>
slideToggle() 函数没有按应有的方式工作。单击框/标签时,UL 会立即展开然后缩回。我可以让它停止的唯一方法是添加'return false;' 当然,这会导致复选框不选中。因此,checkbox.attr()。
破解代码,我知道。但是我怎样才能让复选框工作呢?>.<