我目前有一个巨大的弹出窗口,在弹出窗口中我有一个链接打开另一个巨大的弹出窗口.有点像:
$('.logbook-entry-details').magnificPopup({
type: 'ajax',
closeBtnInside:true,
closeOnBgClick:false,
closeOnContentClick:false,
callbacks: {
beforeOpen: function () {
$.magnificPopup.close();
},
open: function() {
console.log('Popup open has been initiated');
},
beforeClose: function() {
console.log('Popup before close has been initiated');
},
close: function() {
console.log('Popup close has been initiated');
},
afterClose :function() {
console.log('Popup after close has been initiated');
}
}
});
Run Code Online (Sandbox Code Playgroud)
阅读后我发现第二个弹出窗口上的回调将不会被注册,直到我关闭原始弹出窗口,因为打开新的弹出窗口只是替换内容而实际上不会重新创建新实例.
我试图弄清楚如何在我的弹出窗口中关闭当前弹出窗口之前关闭当前弹出窗口,然后调用代码打开新窗口,以便它可以注册我的回调.
顺便说一句,我试图这样做的原因是我想在关闭我的新弹出窗口后重新打开原始弹出窗口.如果您碰巧有更好的解决方案,请告诉我.
我目前有一棵树,我正在使用此处找到的代码功能遍历 C# 中的一棵树以获取我的树中的路径。问题是,此代码当前返回我的树中每个路径的列表。例如,如果我有以下树:
A---
|
---B
|
---C
|
---D
|
---E
Run Code Online (Sandbox Code Playgroud)
代码将返回 {A},{A,B},{A,C},{A,C,D},{A,C,E}
我实际上需要它来返回分支,即{A,B},{A,C,D},{A,C,E}。
这不必是上述方法的一部分,只要最后我得到的列表只是分支而不是每条路径。
我真正想弄清楚的是如何从上述方法中过滤 IEnumerable 列表,使其仅包含每个列表中最后一个元素没有子元素的条目。
所以在我当前的代码中:
class Node
{
public string Name;
public int ParentID;
public List<Node> Children;
}
Run Code Online (Sandbox Code Playgroud)
然后在我的主代码中
List<Node> listOfNodes = getTreeNodes();
Node rootNode = listOfNodes.Where(n => n.ParentID == 0).FirstOrDefault();
// the below paths var will have every path instead of just the branches
var paths = ComputePaths(rootNode, n=>n.Children);
Run Code Online (Sandbox Code Playgroud)
使用链接答案中的代码:
static IEnumerable<IEnumerable<T>> ComputePaths<T>(T Root, Func<T, IEnumerable<T>> Children) {
yield return new[] { …Run Code Online (Sandbox Code Playgroud)