1

我正在尝试创建一个简单的 jquery 插件。这是我到目前为止所获得的链接

http://jsfiddle.net/T4G96/

(function ($) {

    $.bsDatepicker= function(element) {

        var $element=$(element);

        $element.attr("readonly","readonly");


        $element.on("mousedown",function(){
            renderCalendar();

        });




    renderCalendar = function(){
        alert($element.attr("name"));

    }

  }

     $.fn.bsDatepicker = function(options) {

        return this.each(function() {
            $abc=$(this);
            // if element has a date picker already attached
            if (undefined != $(this).data('bsDatepicker')) {

                // get reference to the previously attached date picker
                var plugin = $(this).data('bsDatepicker');

                // remove the attached icon (if it exists)...


            }

            // create a new instance of the plugin
            var plugin = new $.bsDatepicker(this, options);

            // save a reference to the newly created object
            $(this).data('bsDatepicker', plugin);

        });

    }

})(jQuery)

$(document).ready(function(){
    $("#cal").bsDatepicker();
    $("#cal2").bsDatepicker();
});

我面临的问题是我将此插件实现到具有不同名称和 ID 的两个文本框。我已经在 mousedown 事件的控制台中输出了元素名称。这里的问题是它总是输出第二个文本框名称。它应该打印被点击的元素的名称。我在这里做错了什么?任何帮助将不胜感激。

谢谢

4

1 回答 1

0

我认为您需要将触发事件的元素的引用传递给您的renderCalendar()函数,而不是尝试从变量中读取它

$element.on("mousedown",function(){
    renderCalendar(this);       
});

renderCalendar = function(element){
    alert($(element).attr("name")); 
}

小提琴

于 2013-07-22T06:30:00.863 回答