我对某些编码语言非常陌生,我正在努力教我自己。经过一些研究,我通常能够解决我的问题,但我真的被卡住了。我有一个响应式导航系统,子菜单使用jquery构建,但在响应式视图中,只有子菜单的按钮才会扩展子部分。
现有代码:
void LiberarMemoriaMatriz(double*** M,int n){
int i = 0;
if(M == NULL) return;
for(i=0; i<=n; i++){
free((*M)[i]);
}
free(*M);
}
int ReservarMemoriaMatriz(double*** M, int n, int ,){
int i = 0;
if(M == NULL) return 0;
(*M) = malloc((n+1)*sizeof(double*));
if((*M) == NULL){
return 0;
}
for(i = 0; i<=n; i++){
(*M)[i] = malloc(m*sizeof(double));
if((*M)[i] == NULL){
/* free what is allocated before failing */
for(i--; i>=0; i--) free((*M)[i]);
free(*M);
return 0;
}
}
return 1;
}
我玩了一下,但是当我做了以下更改时,打开/关闭子菜单会关闭父菜单。
cssmenu.find('li ul').parent().addClass('has-sub');
multiTg = function() {
cssmenu.find(".has-sub").prepend('<span class="submenu-button"></span>');
cssmenu.find('.submenu-button').on('click', function() {
$(this).toggleClass('submenu-opened');
if ($(this).siblings('ul').hasClass('open')) {
$(this).siblings('ul').removeClass('open').hide();
}
else {
$(this).siblings('ul').addClass('open').show();
}
});
};
我认为我的问题是如何限制切换功能调用的子元素?或者我是否完全搞砸了这一切?任何帮助或指向我正确的方向将是非常有帮助的!谢谢!
PS,导航的HTML:
cssmenu.find('li ul').parent().addClass('has-sub');
multiTg = function() {
cssmenu.find(".has-sub").prepend('<span class="submenu-button"></span>');
cssmenu.find('.submenu-button').parent().on('click', function() {
$(this).children('.submenu-button').toggleClass('submenu-opened');
if ($(this).children('ul').hasClass('open')) {
$(this).children('ul').removeClass('open').hide();
}
else {
$(this).children('ul').addClass('open').show();
}
});
};
答案 0 :(得分:0)
您的第二个代码几乎就在那里,只是点击向上传播,从而触发了对父菜单项的点击。
使用console.log始终是个好主意。您将看到对孩子的点击会在控制台中触发2条消息:https://jsfiddle.net/7r729q5r/2/
要停止行为,请使用stopPropagation():
cssmenu.find('.submenu-button').parent().on('click', function(event) {
event.stopPropagation();
参见https://jsfiddle.net/7r729q5r/3/
附近的第36行此外,你的css第230行有一个错误,导致菜单在某些宽度上消失。