이벤트 버블은 <listbox>
요소에 이벤트 처리기를 등록 할 수 있음을 의미합니다.
listbox.addEventListener("dblclick", function(event)
{
var target = event.target;
while (target && target.localName != "listitem")
target = target.parentNode;
if (!target)
return; // Event target isn't a list item
alert(target.getAttribute("recordId"));
}, false);
이것은 당신이 목록에 추가하기 전에 목록 항목에 recordId
속성을 추가 한 것으로 가정합니다 event.target
당신이 <listitem>
요소를 찾을 수 있습니다.
메뉴의 popupshowing
이벤트에서 상황에 맞는 메뉴가 일반적으로 초기화된다는 차이점을 제외하면 상황 메뉴 (예 : 속성을 <listbox>
에 추가)와 유사하게 작동합니다. 이 이벤트의 대상은 컨텍스트 메뉴 자체이므로 목록 항목을 찾는 데 도움이되지 않습니다.
menu.addEventListener("popupshowing", function(event)
{
var target = event.target.triggerNode;
while (target && target.localName != "listitem")
target = target.parentNode;
if (!target)
return event.preventDefault(); // Don't show context menu without a list item
alert(target.getAttribute("recordId"));
}, false);
감사합니다, 블라디미르 : 그러나 당신이 그 일을 할 수있는
menupopup.triggerNode()
property (사용되지 않는document.popupNode
에 현대적인 대안)이있다. 아주 간단합니다. 작은 수정 - 당신의 코드에서'listItem'은'target'으로 대체되어야합니다. –@BGM : 여기 내 답과 어떻게 관련이 있는지는 모르겠지만, 문제는 분명합니다. 'listbox' 변수는 정의되지 않았습니다.) –
@WladimirPalant -이 질문은 제가 여기에있는 답변과 관련이 있습니다 답 (그래서 같은 질문을 할 수는 없습니다),하지만 저는 제 경우에 그것을 적용하는 방법을 이해할 수 없습니다. 나는'listbox'가 정의되어 있지 않다는 것을 이해하지만 왜? 'window.addEvenListener' 제대로 작동합니다. – bgmCoder