2013-09-25 25 views
0

这是我的代码,我将右键单击一个节点并显示一个对话框,然后我将选中此对话框中的复选框以隐藏此节点。但是,似乎每当我右键单击多个节点(不勾选前一节点的复选框,而是选中当前节点的复选框)时,它会隐藏所有先前右键单击的节点,而不是仅隐藏当前右键单击的节点,点击一个。 这里是代码:event.cyTarget坚持以前的事件

cy.on('cxttap','node',function(e) { 
    var target = e.cyTarget; 
    //after clicking node, display dialog, where a checkbox is shown. 
    $("#dialog-rightClick").dialog({ 
    width:250, 
    title:target.id(), 
    position:{my: 'left',at: 'right',of:e} 
    }); 
//checkbox, if checked, hide the node, otherwise,show all nodes 
$('#hdNode').change(function(){ 
     if(this.checked){ 
    // for (var i=0;i<target.length;i++) 
    //{ 
    // console.log(target[i].data()); 
    // } 
     target.hide(); 

     } 
     else{ 
     target.show(); 
     } 
    }); 

有人帮我吗?非常感谢

回答

0

我已经写了测试,以确认包括cxttap在内的事件确实为连续触发器设置了正确的e.cyTarget。如果您确认cy.js端存在错误(而不是系统代码中的其他位置),请使用一小段代码重现错误:https://github.com/cytoscape/cytoscape.js/issues/new

+0

如果测试e。在调用$(“#dialog-rightClick”)。dialog()之前调用cyTarget。它会起作用,但$('#hdNode')。change(function(){}中的target.hide()会坚持前一个事件。 – LEON

+0

如果没有对话框,你可以证实吗?否则,这几乎肯定是对话框问题 – maxkfranz

+0

解决我的问题,如果我在cy.on函数循环之前声明var目标。 – LEON