Javascript 使用jquery访问构造函数创建的对象
我有一个jquery函数,它通过常规javascript函数为所选的每个元素创建一个对话框。我想要实现的一个选项是向对话框中添加按钮。这些按钮可以灵活地分配任何功能 我的问题是如何访问在按钮本身的onclick事件上创建按钮的框 以下是创建对话框的方式:Javascript 使用jquery访问构造函数创建的对象,javascript,jquery-plugins,Javascript,Jquery Plugins,我有一个jquery函数,它通过常规javascript函数为所选的每个元素创建一个对话框。我想要实现的一个选项是向对话框中添加按钮。这些按钮可以灵活地分配任何功能 我的问题是如何访问在按钮本身的onclick事件上创建按钮的框 以下是创建对话框的方式: $('.box').dialogbox({ buttons: { 'click': function () { $(self).css({background:'red',border:'2px solid black'}) },
$('.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'
});
}}
});
一些想法:
- 与此不同,
在javascript或jQuery中没有任何预定义的含义。它只是一个变量名。如果你使用它,你必须给它赋值self
- 在这种情况下,
的使用可能有点误导——它指的是对话框还是按钮?您可能希望将其命名为self
或类似名称dialog
- 还要注意,如果您使用的是jQueryUI对话框,那么您可能打算编写
(),而不是.dialog()
.dialogbox()
this
值的习惯)
我发现提供给我的解决方案最有用的是使用原型库的函数.bind
在您可以指定的特定上下文中调用函数
有关其工作原理的详细信息,请查看我的问题:在收到大量反馈后,我希望广泛使用jquery实现此选项 以下是我的解决方案: $.fn.bindFunction=函数(fn){ fn.适用(本) }) 你会怎么称呼它呢 $(此).bindFunction(fn)
我希望这对那些jquery用户有所帮助您是否尝试过
$(this)
而不是$(self)
?我尝试过,但也没有成功。我想$(this)在这种情况下,每次都会指向所选的“.box”元素。侧注:self
确实有意义。它指向当前的窗口
对象。事实上,我不是在使用jquery UI,而是在构建我自己的UI(我认为学习oo是一个很好的练习)所以我真正需要的是一种方法来引用当前的对话框,该对话框使用动态创建的按钮来创建…我想最大的问题是如何从对象外部访问javascript.prototype方法(我不知道这有什么意义)