【问题标题】:Can you create a jQuery UI widget without using a selector?您可以在不使用选择器的情况下创建 jQuery UI 小部件吗?
【发布时间】:2012-06-07 21:42:47
【问题描述】:

我正在编写我的第一个 jquery UI 小部件:一个由两个文本框(开始日期和结束日期)组成的日期范围控件,这两个文本框都将使用 jQuery UI DatePicker。

我在网上看到的所有小部件代码示例都将小部件行为应用于通用选择器。就我而言,我的选择器中恰好需要两个元素(前面提到的两个文本框),并且将对每个元素应用不同的逻辑。例如,开始日期文本框将具有与结束日期文本框不同的 onblur 事件/行为。

有没有办法在没有选择器的情况下创建一个小部件,而是使用两个命名的构造函数参数,一个用于开始日期,一个用于结束日期?如果没有,是否有更好的方法来处理这个小部件?也许我应该创建一个 POJSO(普通的旧 JS 对象)?

【问题讨论】:

    标签: javascript jquery jquery-ui


    【解决方案1】:

    选择器是什么有什么关系?小部件使用选择器,因为大多数时候它适用于选定的元素。但由小部件决定使用选定的元素。从技术上讲,它可以忽略它们并继续处理任何内容。那么你为什么不直接选择文档(或者像文本框的父容器),然后将一个对象作为参数传递给你的小部件,其中包含“textbox1”和“textbox2”的值,然后在初始化时获取这些值。这有意义吗?

    例如:

    $("#parent_container").yourWidget({
        txtbox1: $("#txt_id1"),
        txtbox2: $("#txt_id2"),
        otherParam: true
    });
    

    在您的小部件代码中,只需忽略选定的元素。根据参数的值处理所有内容。

    【讨论】:

    • 这对我来说根本不重要!我只是担心小部件基类将选择器用于某种内部状态或强制 JS 对象和 DOM 之间的关联。我认为这不是问题?
    • 不,不是问题。您可以将第二个选择器作为参数传递。例如,对于您的日期范围,您将有一个 FROM 和一个 TO 输入字段。 $("#from").dateRange("#to", otherOptions);
    猜你喜欢
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 2023-03-09
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多