2010-01-09 102 views
0

我有一个jquery函数,它为每个选中元素从常规javascript函数创建一个对话框。我想要实现的一个选项是在对话框中添加按钮。这些按钮将具有分配给它们的任何功能的可能性。使用jquery由构造函数创建的访问对象

我的问题是如何访问它们在一个onclick事件创建按钮或使按键本身的

这里是我创建对话框框:

$('.box').dialogbox({ buttons: { 'click': function() { 
    $(self).css({background:'red',border:'2px solid black'}) 
}, } }); 
在此

例如,我使用$(self)访问箱本身,知道它不是正确的方式。但这是我需要修复的部分。

自我的方式被宣布为这是由$.dialogbox jQuery函数以这种方式invloked功能对话框私有变量:

newBox = new dialogbox (content) 

PS。我很抱歉没有更清楚。请问我的问题如果u需要更多的信息

谢谢

+0

您是否尝试过'$(这)''而不是$(个体经营)'? – 2010-01-09 03:24:38

+0

我有,也没有工作。我想在这种情况下$(this)会每次指向选中的“.box”元素。 – salmane 2010-01-09 11:37:09

回答

0

我相信你所描述的问题是一个我问这里只​​是有一天一样:如何引用一个对象,它是超出范围由于功能(筑巢,特别是,jQuery的重写this的值的习惯

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

有关它如何工作,看看我的问题的细节:Preserving a reference to "this" in JavaScript prototype functions

+0

绑定的方式描述完美的作品感谢您的提示.. – salmane 2010-01-10 23:39:01

0

在哪里$.dialogbox()被称为点,我们没有任何引用了一个单独的对话框元/对象。 $('.box')引用页面上的对话框集合,并且this内部的点击处理程序引用该按钮。

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

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

的几点思考:

  • 不像thisself没有在JavaScript或jQuery的任何预定义的含义。这只是一个变量名称。如果你使用它,你必须为它分配一个值。

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

  • 另请注意,如果您使用jQueryUI对话框,您可能打算编写.dialog()see ref),而不是.dialogbox()

+0

旁注:“自我”确实有意义。它指向当前的'window'对象。 – JPot 2010-01-09 04:46:15

+0

acctually我不使用jQuery UI,而是建立我自己的一个(我虽然这将是一个很好的练习来学习oo) 所以我真正需要的是一种方法来引用当前对话框,使用按钮创建动态创建它... 我猜最大的问题是如何从对象外部访问javascript.prototype方法(我不知道这使得sence) – salmane 2010-01-09 11:34:02

0

伟大的反馈我得到了后,我想要实现这个选项的使用jQuery 广泛,这里是我的解决方案:

$。 fn.bindFunction = function(fn){

fn.apply(this);

};

ü会打电话的方式是

$(本).bindFunction(FN)。

我希望这可以帮助那些jQuery的用户那里

相关问题