簡體   English   中英

如何使用JavaScript中的括號符號將函數附加到對象?

[英]How to attach functions to objects using the bracket notation in JavaScript?

我正在編寫一個JavaScript,該JavaScript應該將上下文菜單附加到文檔中的元素。 上下文菜單的jquery插件需要上下文菜單的ID和options對象。 選項對象具有稱為綁定的屬性,該屬性應具有鍵/值對,其中鍵是菜單項的ID,值是單擊時調用的函數。

問題是我要填充的綁定對象在使用方括號概念時沒有將功能附加為值,並且我需要它,因為菜單項的ID無法預先確定。

    var bindings = {};

    var bindingsFunction = function(t){
        alert('Trigger was ' + t.id + '\nAction was Open');
    };

    var $listItems = $contextMenu.find('li');

    $listItems.each(function(index, item){
        var key = '' + item.id;
        bindings[key] = bindingsFunction;
    });

    console.log('bindings is empty', bindings); 

    var result = $icon.contextMenu(contextMenuId, {
        bindings: bindings
    });

那可能只是Firebug的“越野車”(?)顯示。 例:

var mytest = {};

var foo = function() {
};

mytest['foo'] = foo;

console.log(mytest);

將顯示:

Object { }

看起來像一個空對象,但是如果單擊它,您將看到內容。

您沒有包括腳本正在處理的HTML,但是我猜測是所選的li元素沒有id屬性。 結果,當您將item.id分配給key ,它是一個空字符串 ,因此不是有效的屬性名

如果在每個li上添加一個id ,它應該可以正常工作: http : //jsfiddle.net/8TL7u/

它在Chrome中運行,所以我記得我在使用Firefox 4 Beta,所以我剛剛重啟了Firefox,它神奇地工作了。 如果我可以再次復制它,那么我將能夠提供更多細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM