下面是从C#.NET动态生成HTML样本: -jQuery的 - 复选框标签点击不工作
<ul class="multiselect-checkboxes clearfix horizontal" id="chkMC"><li onclick="setMcCb(event);"><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoices0-931336440" id="ctl03_ctl05_CheckboxChoices0-931336440"><label for="ctl03_ctl05_CheckboxChoices0-931336440">1-2 Years</label></span></li><li onclick="setMcCb(event);"><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoices1-1671570667" id="ctl03_ctl05_CheckboxChoices1-1671570667"><label for="ctl03_ctl05_CheckboxChoices1-1671570667">5-10 Years</label></span></li><li onclick="setMcCb(event);"><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoices2679786207" id="ctl03_ctl05_CheckboxChoices2679786207"><label for="ctl03_ctl05_CheckboxChoices2679786207">10-12 Years</label></span></li><li onclick="setMcCb(event);"><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoices3-977631492" id="ctl03_ctl05_CheckboxChoices3-977631492"><label for="ctl03_ctl05_CheckboxChoices3-977631492">12-15 Years</label></span></li><li onclick="setMcCb(event);"><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoices41547758987" id="ctl03_ctl05_CheckboxChoices41547758987"><label for="ctl03_ctl05_CheckboxChoices41547758987">15-20 Years</label></span></li><li onclick="setMcCb(event);"><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoices5-1658326960" id="ctl03_ctl05_CheckboxChoices5-1658326960"><label for="ctl03_ctl05_CheckboxChoices5-1658326960">20-21 Years</label></span></li><li onclick="setMcCb(event);"><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoices6-100787876" id="ctl03_ctl05_CheckboxChoices6-100787876"><label for="ctl03_ctl05_CheckboxChoices6-100787876">22-23 Years</label></span></li><li onclick="setMcCb(event);"><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoices7122075492" id="ctl03_ctl05_CheckboxChoices7122075492"><label for="ctl03_ctl05_CheckboxChoices7122075492">23-24 Years</label></span></li><li onclick="setMcCb(event);"><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoices8-1742375481" id="ctl03_ctl05_CheckboxChoices8-1742375481"><label for="ctl03_ctl05_CheckboxChoices8-1742375481">More than that</label></span></li><li><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoicesOther" id="ctl03_ctl05_CheckboxChoicesOther"><label for="ctl03_ctl05_CheckboxChoicesOther">other</label></span> <input type="text" style="width: 150px;" class="QTextBox" id="ctl03_ctl05_otherText" name="ctl03$ctl05$otherText"></li><li><span class="QRadio"><input type="checkbox" name="ctl03$ctl05$CheckboxChoicesNA" id="ctl03_ctl05_CheckboxChoicesNA"><label for="ctl03_ctl05_CheckboxChoicesNA">plplpl</label></span></li></ul>
JS方法: -
function setMcCb(e) {
if (!e) var e = window.event;
var tg = (window.event) ? e.srcElement : e.target; //FF & IE.
var j$chk = j$(tg).closest('li').find(':checkbox');
if (j$chk[0] != tg)
j$chk.attr('checked', !j$chk.attr('checked'));
}
* 的目的JS方法: -当有人点击复选框,标签或li标签时,我创建了这个javascript,复选框应该切换。 *
* 我的问题: - 当我点击标签元素,js不工作。切换没有发生。请帮我细化js代码。 *
我做它的工作如下代码: -
if (!e) var e = window.event;
var tg = (window.event) ? e.srcElement : e.target; //FF & IE.
//Label click does not toggle the cbx with this JS, so the below processing is skipped by returning false.
if (tg.tagName.toUpperCase() == 'LABEL')
return false;
var j$chk = j$(tg).closest('li').find(':checkbox');
if (j$chk[0] != tg){
if(j$chk.attr('checked'))
j$chk.removeAttr('checked');
else
j$chk.attr('checked', 'checked');
}
伙计们,现在标签上的点击没有按照上面的代码进行切换。我想对所有三个元素复选框,标签和LI项目进行切换。 – Karan 2010-10-19 11:47:31
我观察到的一件事是,其他部分(j $ chk.attr('checked','checked'); )中的代码在Label中不起作用。这很奇怪。 – Karan 2010-10-19 11:58:36
我发现的另一件事是,当单击标签以将其设置为未选中时,该复选框甚至不会被取消选中。 – Karan 2010-10-19 12:09:18