2015-12-02 55 views
0

我有三個js的建築模型。對於我的用例,我從建築模型中選擇一個組件,並捕獲組件的uuid。然後我需要點擊菜單中的按鈕來查看詳細信息。菜單在腳本中插入頁面。 當我點擊按鈕時,它會選擇留在它後面的建築物的組件。因此,我無法訪問我之前選擇的數據。 enter image description here從透明菜單中選擇三個js對象

在上面的圖片中,例如,我有Buttons1-3。在去按鈕之前,我選擇了建築模型的一個組件。然後,當我點擊任何按鈕時,鼠標也會選擇它後面的建築組件,例如Button1後面的窗口,Button2後面的牆,等等。因此,我無法訪問我之前選擇的組件的uuid。我怎樣才能防止這?以下是代碼:

JA.addMenu = function() { 

    JA.menu = JA.container.appendChild(document.createElement('div')); 
    JA.menu.id = 'movable'; 
    JA.menu.title = 'Move the menu around or click here to close the menu'; 
    JA.menu.addEventListener('mousedown', JA.mouseMove, false); 
    JA.menu.innerHTML = '<a id=closerIcon href=JavaScript:JA.toggleMenu(); ><p><i class="fa fa-bars"></i></p></a>' + 
     '<p>' + 
      '<a href="" title=' + JA.TitleText2 + '>' + JA.TitleText1 + '' + JA.TitleText1 + '</a> ' + 
     '</p>' + 
     '<hr>' + 
    ''; 
    window.addEventListener('mouseup', JA.mouseUp, false); 

}; 

JA.Button1Tab = function() { 

    var tab = JA.menu.appendChild(document.createElement('div')); 
    tab.title = 'Button1'; 
    tab.innerHTML = 
     '<a href=# onclick=JA.toggleDialogs(JA.aboutDialog); ><p class=button >' + 
      '<i class="fa fa-share-alt"></i> Button1' + 
     '</p></a>'; 
    JA.aboutDialog = JA.container.appendChild(document.createElement('div')); 
    JA.aboutDialog.style.cssText = 'display: none; background-color: #ccc; left: 50px; opacity: 0.9; padding: 20px; ' + 
     'bottom: 0; left: 0; height: 370px; margin: auto; position: absolute; right: 0; top: 0; width: 500px; z-index:10; '; 
    JA.aboutDialog.innerHTML = 
     '<h3>' + document.title + ' ' + JA.titleIcon + '</h3>' + 
     +'<h4>Menu explains the following:</h4>' 
    ''; 
}; 
+0

所以每一個互動操作都在工作(例如旋轉,選擇,平移或其他),忽略前面的菜單? – mrapsogos

+0

所有互動操作在三個j中正常工作。它不會忽略菜單。爲按鈕定義的功能運行良好。對於我的用例,我走進建築模型並選擇模型中的一個組件。然後我點擊按鈕。但是,它會選擇按鈕後面的建築組件,然後運行我爲按鈕 – yalcinm1

+0

aha定義的功能。所以容器和菜單都能正常工作。第一種方法是分離點擊(例如右鍵點擊選擇對象並離開菜單),第二種方法是在菜單可見時拆除容器。告訴我,如果我得到它的權利,或者你想要別的東西。 – mrapsogos

回答

1

好了,所以,在你的代碼中設置了菜單按鈕的z-index的。嘗試設置菜單面板的Z-index,使容器位於菜單下方。代碼中的菜單和容器處於相同的級別,這就是爲什麼都要監聽點擊事件。