【JQuery】扩展label for

一、关于label标签的for属性

关于labelfor属性可以看这里
简单来说就是点击label之后可以让for指向的元素获得焦点;
但这个功能有点鸡肋,for属性只能写id,所以接下来就让for也能支持各种选择器
例如:

<div>
    <label for="input1">点我</label>
    <input id="input1" type="text" name="name" value="" />
</div>
<hr />
<div>
    <label for=".input2">点我</label>
    <input class="input2" type="text" name="name" value="" />
</div>
<hr />
<div>
    <label for="nextAll(':input:first')">点我</label>
    <span></span>
    <input type="text" name="name" value="" />
</div>

二、代码

(function () {
    $(() => {
        $(document).on("click", "label[for]", e => {
            const selected = $(e.target).attr("for");
            if (document.getElementById(selected)) {
                return;
            }

            try {
                const jq = eval(`(function(e){ return e.${selected} })`)($(e.target));
                if (jq.length > 0) {
                    jq.eq(0).focus();
                }
            } catch (e) {

            }
            try {
                const jq = $(selected);
                if (jq.length > 0) {
                    jq.eq(0).focus();
                }
            } catch (e) {

            }
        });
    });
})();

三、Demo

JQuery扩展label[for]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,736评论 1 45
  • ## 你可能会用到的css属性 > css语言相对简单,css的属性值就这么多,没有太多逻辑性,没有算法,熟记各个...
    流年_7fec阅读 250评论 0 0
  • 介绍 CSS 选择器是 CSS 规则的第一部分。它是元素和其他部分组合起来告诉浏览器哪个 HTML 元素应当是被选...
    LK_EX阅读 404评论 0 0
  • @转自GitHub 介绍js的基本数据类型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou阅读 1,200评论 0 0
  • 内容概述 一 、 文本属性 1.text-decoration 设置文本的修饰外观 (下划线、上划线、 贯穿性 、...
    小虾米的时光机阅读 304评论 0 0