gpt4 book ai didi

jquery - 如何扩展 jQueryUI datepicker 以接受附加参数?

转载 作者:行者123 更新时间:2023-12-03 22:20:44 26 4
gpt4 key购买 nike

我喜欢 jQueryUI datepicker 的可自定义性,足以允许一个按钮触发显示 datepicker,但不幸的是,它不允许您自定义自己的标记。

如果我有这样的标记:

<span>
<input type="text" class="datepicker" />
</span>
<span>
<button class="datepicker-trigger">Open</button>
</span>

为了让日期选择器在单击按钮时显示,我必须实现以下代码:

$('.datepicker').datepicker({
showOn:'none'
});
$('.datepicker-trigger').click( function() {
$('.datepicker').datepicker('show');
});

这是上述代码的 jsFiddle:http://jsfiddle.net/P9Qmu/

这一切都很好,但我真正想要做的是向 datepicker 函数传递一个附加参数,该参数指定一个对象或选择器,指示哪个元素应触发显示。

例如,我真的很希望能够做到这一点:

$('.datepicker').datepicker({
showOn:'none',
trigger:'.datepicker-trigger'
});

我知道如何扩展 jQuery 以添加方法和创建插件,但我不确定如何(或者是否可能)修改现有函数中允许的参数。

有谁知道我如何扩展 $.datepicker 来实现我想要做的事情,或者至少为我指明正确的方向?任何帮助将不胜感激。

最佳答案

怎么样:

var __picker = $.fn.datepicker;

$.fn.datepicker = function(options) {
__picker.apply(this, [options]);
var $self = this;

if (options && options.trigger) {
$(options.trigger).bind("click", function () {
$self.datepicker("show");
});
}
}

用法:

$("#date").datepicker({
trigger: "#button"
});

$("#date2").datepicker({
trigger: "#button2"
});

示例: http://jsfiddle.net/gduhm/

<小时/>

或者,使用您自己的 jQuery 插件减少干扰:

$.widget("ui.datepicker2", {
_init: function() {
var $el = this.element;
$el.datepicker(this.options);

if (this.options && this.options.trigger) {
$(this.options.trigger).bind("click", function () {
$el.datepicker("show");
});
}
}
});

(类似的用法,除了使用 datepicker2 或任何您命名的名称)

示例: http://jsfiddle.net/puVap/

关于jquery - 如何扩展 jQueryUI datepicker 以接受附加参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com