Javascript 使用jquery访问构造函数创建的对象

Javascript 使用jquery访问构造函数创建的对象,javascript,jquery-plugins,Javascript,Jquery Plugins,我有一个jquery函数,它通过常规javascript函数为所选的每个元素创建一个对话框。我想要实现的一个选项是向对话框中添加按钮。这些按钮可以灵活地分配任何功能 我的问题是如何访问在按钮本身的onclick事件上创建按钮的框 以下是创建对话框的方式: $('.box').dialogbox({ buttons: { 'click': function () { $(self).css({background:'red',border:'2px solid black'}) },

我有一个jquery函数,它通过常规javascript函数为所选的每个元素创建一个对话框。我想要实现的一个选项是向对话框中添加按钮。这些按钮可以灵活地分配任何功能

我的问题是如何访问在按钮本身的onclick事件上创建按钮的框

以下是创建对话框的方式:

$('.box').dialogbox({  buttons: { 'click': function () {
    $(self).css({background:'red',border:'2px solid black'}) 
}, } });
在本例中,我使用
$(self)
访问框本身,知道它不是正确的方法。但这是我需要解决的部分

顺便说一句,self被声明为函数dialogbox的私有变量,该函数由
$调用。dialogbox
jquery函数以这种方式:

newBox = new dialogbox ( content)
另外,我很抱歉没有说得更清楚。如果你需要更多信息,请问我问题


谢谢

在调用
$.dialogbox()
时,我们没有任何引用单个对话框元素/对象的内容
$('.box')
引用页面上的对话框集合,而
单击处理程序中的此
引用按钮

一种方法是将对话框定位为按钮的祖先。获取与选择器匹配的元素的最近祖先。例如:

$('.box').dialogbox({
    buttons: { 'click': function() {
        self = $(this).closest('.box');
        self.css({
            background: 'red',
            border: '2px solid black'
        });
    }}
 });
一些想法:

  • 与此不同,
    self
    在javascript或jQuery中没有任何预定义的含义。它只是一个变量名。如果你使用它,你必须给它赋值

  • 在这种情况下,
    self
    的使用可能有点误导——它指的是对话框还是按钮?您可能希望将其命名为
    dialog
    或类似名称

  • 还要注意,如果您使用的是jQueryUI对话框,那么您可能打算编写
    .dialog()
    (),而不是
    .dialogbox()


我相信您描述的问题与前几天我在这里问的问题是一样的:如何引用由于函数嵌套而超出范围的对象(特别是jQuery重写
this
值的习惯)

我发现提供给我的解决方案最有用的是使用原型库的
函数.bind
在您可以指定的特定上下文中调用函数


有关其工作原理的详细信息,请查看我的问题:

在收到大量反馈后,我希望广泛使用jquery实现此选项 以下是我的解决方案:

$.fn.bindFunction=函数(fn){

fn.适用(本)

})

你会怎么称呼它呢

$(此).bindFunction(fn)


我希望这对那些jquery用户有所帮助

您是否尝试过
$(this)
而不是
$(self)
?我尝试过,但也没有成功。我想$(this)在这种情况下,每次都会指向所选的“.box”元素。侧注:
self
确实有意义。它指向当前的
窗口
对象。事实上,我不是在使用jquery UI,而是在构建我自己的UI(我认为学习oo是一个很好的练习)所以我真正需要的是一种方法来引用当前的对话框,该对话框使用动态创建的按钮来创建…我想最大的问题是如何从对象外部访问javascript.prototype方法(我不知道这有什么意义)