首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery自定义插件

jQuery自定义插件
EN

Stack Overflow用户
提问于 2014-08-17 19:10:31
回答 1查看 74关注 0票数 0

我试着写我的第一个jQuery插件,我坚持=)

插件的想法很简单:

对表单上的任何输入进行初始化,将按钮添加到表单中。如果输入有值,则显示红色按钮,如果输入为空,则不显示按钮。但如果按下某些键-绿色按钮将出现在输入附近。

好的。按钮出现了!但是怎么做,让他们用我的插件来点击呢?

在这里,代码:

代码语言:javascript
复制
(function($) {
    jQuery.fn.buttonokdel = function(options) {
        var settings = {
            btnDel: null,
            btnOk: null
        };
        var settings = $.extend( {}, settings, options );
        var controlbuttonfunc = function() {
            $(settings.btnOk).on("click", function(){
                alert ($(this).html());
            });
        var $this = $(this);
        if ($this.val()) {
            $this.after(
                    '<span class="input-group-btn"> \n\
                     <button class="btn btn-danger btno" type="button">\n\
                        &nbsp<span class="glyphicon glyphicon-remove-sign"></span>\n\
                     </button> \n\
                     </span>'
                    );
        } 
        $(this).keyup(function(e) {
            if ($this.next().has("span").length > 0) {
                return false;
            }
            $this.after(
                    '<span class="input-group-btn"> \n\
                      <button class="btn btn-success btyes" type="button")>\n\
                        &nbsp<span class="glyphicon glyphicon-ok-sign"></span>\n\
                     </button> \n\
                     </span>'
                    );
            return true;
        });
    };
    return this.each(controlbuttonfunc);
};
}(jQuery));

$(document).ready(function() {
    $(".inputa").buttonokdel({btnOk:".btyes", btnOk:".btyes"});
});

似乎我不理解jquery元素初始化的某些内容。请帮我找出我做错了什么。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-17 20:04:49

不确定这是否解决了您的问题,但我将尝试一下:在动态创建按钮时,应该将jQuery on事件附加到静态元素。静态元素将将单击事件委托给所有子元素,也用于在页面已加载时创建的子元素。

代码语言:javascript
复制
var controlbuttonfunc = function() {
        $(settings.btnOk).on("click", function(){ ...

必须被转变成

代码语言:javascript
复制
var controlbuttonfunc = function() {
        $(document).on("click", ".btn", function(){ ...

任何静态父元素都可以用作事件委托的容器元素,而不是$(document)。

工作演示:单击动态添加元素的事件委托。

有关更多信息,请参阅https://api.jquery.com/on/#on-events-selector-data-handler部分“直接和委托的事件”:

“事件处理程序仅绑定到当前选定的元素;它们必须在代码调用.on()时存在于页面上。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25352715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档