2010-01-09 139 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的用戶那裏

相關問題