简单的 Mootools 到 jQuery 转换 - 事件处理程序

发布于 2024-12-10 13:22:34 字数 1265 浏览 0 评论 0原文

我正在将 MooTools 插件移植到 jQuery,但在我陷入一小部分之前从未使用过 MooTools,我希望有人可以提供帮助。

MooTools:

var bt = new Element('a',{
    "title" : label,
    "text"  : label,
    "class" : classe,
    "events": {
        click: (clickEvent || this.hide).bind(this)
    }
});

this.buttons.push(btn);
return btn;

到目前为止我的 jQuery:

var btn = $('a').attr({
    "title" : label,
    "text"  : label,
    "class"  : cssClass
});

btn.click(function() {

});

我只是不确定如何从 MooTools 转换点击处理程序行...?

编辑:这是完整的功能:

addButton : function(label, cssClass, clickEvent) {

    // jQuery code
    var btn = $('<a></a>').attr({
        "title" : label,
        "text"  : label,
        "class"  : cssClass
    });

    btn.click(function() {

    });

    // Mootools code
    var bt = new Element('a',{
        "title" : label,
        "text"  : label,
        "class" : classe,
        "events": {
            click: (clickEvent || this.hide).bind(this)
        }
    });

    this.buttons.push(btn);
    return btn;
},

它是模态窗口插件的一部分,因此添加这一点它会检查要添加的按钮。如果回调函数被传递,那么它将对其起作用,如果没有,那么它将隐藏模态窗口...我认为...

注意:只是指出我还稍微改变了jQuery 版本中的参数和变量名称。这不是一个错字。

I'm in the middle of porting a MooTools plugin over to jQuery but having never used MooTools before I'm stuck on a small section which I'm hoping someone can help with.

MooTools:

var bt = new Element('a',{
    "title" : label,
    "text"  : label,
    "class" : classe,
    "events": {
        click: (clickEvent || this.hide).bind(this)
    }
});

this.buttons.push(btn);
return btn;

My jQuery so far:

var btn = $('a').attr({
    "title" : label,
    "text"  : label,
    "class"  : cssClass
});

btn.click(function() {

});

I'm just not sure how to convert the click handler line from MooTools...?

EDIT: Here's the full function:

addButton : function(label, cssClass, clickEvent) {

    // jQuery code
    var btn = $('<a></a>').attr({
        "title" : label,
        "text"  : label,
        "class"  : cssClass
    });

    btn.click(function() {

    });

    // Mootools code
    var bt = new Element('a',{
        "title" : label,
        "text"  : label,
        "class" : classe,
        "events": {
            click: (clickEvent || this.hide).bind(this)
        }
    });

    this.buttons.push(btn);
    return btn;
},

It's part of a Modal window plugin so add this point it's checking to see what buttons it's meant to be adding. If the callback function is passed then it will act on it, if not then it will hide the Modal window... I think...

NOTE: Just to point out I've also slightly changed the parameter and variable names in the jQuery version. It's not a typo.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

剧终人散尽 2024-12-17 13:22:34

试试这个:

var btn = $('<a></a>').attr({
    "title" : label,
    "text"  : label,
    "class" : cssClass
}).click(function(e) {
    //Click event logic (I think you're trying to hide it)
    e.preventDefault();
    $(this).hide();
});

或者,你可以这样写:

var btn = $('<a></a>').attr({
    "title" : label,
    "text"  : label,
    "class" : cssClass
    "click" : function(e){
                e.preventDefault();
                $(this).hide();
    });
});

或者,像这样:

var btn = $('<a></a>').attr('title', label)
                      .attr('text', label)
                      .attr('class', cssClass)
                      .click(function(e) {
                                             e.preventDefault();
                                             $(this).hide();
                                         });

Try this:

var btn = $('<a></a>').attr({
    "title" : label,
    "text"  : label,
    "class" : cssClass
}).click(function(e) {
    //Click event logic (I think you're trying to hide it)
    e.preventDefault();
    $(this).hide();
});

Or, you could write it like this:

var btn = $('<a></a>').attr({
    "title" : label,
    "text"  : label,
    "class" : cssClass
    "click" : function(e){
                e.preventDefault();
                $(this).hide();
    });
});

Or, like this:

var btn = $('<a></a>').attr('title', label)
                      .attr('text', label)
                      .attr('class', cssClass)
                      .click(function(e) {
                                             e.preventDefault();
                                             $(this).hide();
                                         });
丘比特射中我 2024-12-17 13:22:34

这部分需要重写。 mootools插件实际上是在创建一个新的锚点;您拥有的代码将选择页面上的所有锚点并将属性应用于它们(实际上它可能只会影响第一个选定的锚点,但仍然是一个问题)。

var btn = $('a').attr({
    "title" : label,
    "text"  : label,
    "class  : cssClass
});

它不能回答你的问题,但这是你需要知道的事情。

This part needs to be rewritten. The mootools plugin is actually creating a new anchor; the code you have is going to select all anchors on the page and apply the attrs to them (actually it probably just affects the first selected anchor, but still a problem).

var btn = $('a').attr({
    "title" : label,
    "text"  : label,
    "class  : cssClass
});

It doesn't answer your question, but it's something you needed to know.

堇年纸鸢 2024-12-17 13:22:34
addButton : function(label, cssClass, clickEvent){
var btn = $('<a>');

btn.attr({
"title" : label,
"text"  : label,
"class"  : cssClass
}).click( $.proxy( ( clickEvent || this.hide ), this )  );

this.buttons.push( btn );
return btn;
}

注意:

$.proxy( fn, context ) 在功能上等同于 fn.bind( context )

使用 .click(fn) 更好> 比 attr("click", fn) 因为前者得到
jQuery 跨浏览器事件修复。

addButton : function(label, cssClass, clickEvent){
var btn = $('<a>');

btn.attr({
"title" : label,
"text"  : label,
"class"  : cssClass
}).click( $.proxy( ( clickEvent || this.hide ), this )  );

this.buttons.push( btn );
return btn;
}

Notes:

$.proxy( fn, context ) is functionally equivalent to fn.bind( context )

It's much better to use .click(fn) than attr("click", fn) because the former gets
jQuery cross browser event fixes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文