转载于:
http://www.cftea.com/c/2011/02/2UCSDQNDA6U9EV3V.asp
http://www.cftea.com/c/2010/12/L5RJ4NFAQ8JRDL0W.asp
在桌面程序中,checkbox 后面是带文字的,单击文字就会选中或取消选中选择框,点起来很方便,但 HTML 中 checkbox 是干的,单起来非得把鼠标移到那个小小的 checkbox 框框上。
要想实现桌面程序的效果,可增加一个控件 label。
<input type="checkbox" id="c1" name="c1" value="c1" />
<label for="c1">喜欢千一网络就点我</label>
<label for="c1">喜欢千一网络就点我</label>
如上代码,点 label 的文字,前面的 checkbox 就会被选中,再点击就会被取消。
令人欣喜的是,点 label 跟点 checkbox 一样,都会触发 checkbox 的 click 事件,这就方便了我们 DOM 编程。
另外
label 须指定一个 for 属性,对应一个 checkbox 的 id,大量的 label 和 checkbox 时,较麻烦,可使用 ezj 的 labelFor 轻松解决。
如何让网页也像桌面程序一样,单击文字选择多选框、单选框、文本框……可用 label,且指定 for 属性值为元素 id,但每个都指定,一来麻烦,二来不便于维护。
<div>
您使用过 ezj 吗?
<input type="radio" name="r1" /><label>使用过</label>
<input type="radio" name="r1" /><label>还没有</label>
</div>
<div>
您使用过的其他 JavaScript 框架:
<input type="checkbox" name="c1" /><label>Prototype</label>
<input type="checkbox" name="c1" /><label>jQuery</label>
<input type="checkbox" name="c1" /><label>YUI</label>
<input type="checkbox" name="c1" /><label>ExtJS</label>
<input type="checkbox" name="c1" /><label>MooTools</label>
</div>
<div>
<label>您对 ezj 有什么建议?</label>
<input type="text" size="30" name="t1" />
</div>
您使用过 ezj 吗?
<input type="radio" name="r1" /><label>使用过</label>
<input type="radio" name="r1" /><label>还没有</label>
</div>
<div>
您使用过的其他 JavaScript 框架:
<input type="checkbox" name="c1" /><label>Prototype</label>
<input type="checkbox" name="c1" /><label>jQuery</label>
<input type="checkbox" name="c1" /><label>YUI</label>
<input type="checkbox" name="c1" /><label>ExtJS</label>
<input type="checkbox" name="c1" /><label>MooTools</label>
</div>
<div>
<label>您对 ezj 有什么建议?</label>
<input type="text" size="30" name="t1" />
</div>
JavaScript 代码(ezj 代码)
ezj.ready(function(){
$("<label").labelFor();
});
$("<label").labelFor();
});
labelFor 自动识别 label 前后的元素,并根据元素类型来执行是否进行 for 关联:若 label 前面是多选框、单选框,则关联;若后面是文本框,则关联。