2011-02-03 4 views
0

문서의 요소에 상황에 맞는 메뉴를 첨부해야하는 자바 스크립트를 작성하고 있습니다. 컨텍스트 메뉴에 대한 jquery 플러그인에는 컨텍스트 메뉴의 id와 옵션 객체가 필요합니다. 옵션 객체는 키가 값의 쌍인 키와 값 쌍을 가져야하는 바인딩이라는 속성을 가지고 있으며 값은 클릭시 호출되는 함수입니다.JavaScript에서 대괄호 표기법을 사용하여 객체에 함수를 연결하는 방법은 무엇입니까?

문제는 내가 채우려 고 시도하고있는 바인딩 객체가 괄호 개념을 사용할 때 값으로 함수를 첨부하지 않아 메뉴 항목의 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 
    }); 

답변

0

Chrome에서 작동했기 때문에 Firefox 4 Beta를 사용하고 있다는 것을 기억하고 있었기 때문에 Firefox를 다시 시작했는데 마술처럼 작동했습니다. 다시 재현 할 수 있다면 더 자세한 정보를 제공 할 수있을 것입니다.

0

당신은 스크립트가 작업 HTML을 포함하지 않았다,하지만 내 추측이 선택되고있는 li 요소가 id 속성이 없다는 것입니다. 결과적으로 에 item.id을 할당하면 빈 문자열 이고 올바른 속성 이름이 이 아닙니다. 각 li상의 id 압정 경우

, 그냥 잘 작동합니다 : (?) 방화범에서 단지 "버그"디스플레이 될 수 http://jsfiddle.net/8TL7u/

+0

예, 스크립트에서 제거 된 console.log에서 ID와 바인딩 [id] = id가 작동했음을 보여줍니다. – Azder

+0

빈 문자열은 완벽하게 유효한 속성 이름이며 점 표기법으로는 액세스 할 수 없습니다. –

1

합니다. 예 :

var mytest = {}; 

var foo = function() { 
}; 

mytest['foo'] = foo; 

console.log(mytest); 

가 표시됩니다

Object { } 

는 빈 객체처럼 보이지만 당신이 그것을 클릭하면 당신은 내용을 확인할 수 있습니다.

+0

나는 클릭했지만 재미 있지는 않지만, Firefox를 재시작했다. 마술처럼 작동했다. 내가 다시 그것을 재현 할 수있을 때만. – Azder

+0

@Azder : 흥미 롭습니다. 나는이 행동을 자주합니다. – jAndy

관련 문제