Javascript jQuery切换-应仅在单击标题时关闭
小提琴: 情景: 我想在选项卡式容器中使用嵌套切换,就像在小提琴中一样 我的问题: 当我单击主切换(“切换1”)或(“切换2”)时,将显示内部内容。 但如果我点击里面的任何东西,它就会关闭。例如,如果我单击切换2,如果我单击选项卡1->嵌套切换1,切换2本身将关闭 我希望它保持开放 我猜: 如果单击了与切换相关的任何内容(甚至文本内容),JQuery工作将关闭切换 我的需要: 我只想在单击这些矩形标题时关闭切换 另外,如果您能以这样的方式帮助清理代码,我不需要编写单独的JS来使内部嵌套切换独立于其父或子切换工作,那就太好了 目前,我为示例中的两个切换编写了两个Toggle JS函数 //拨动Javascript jQuery切换-应仅在单击标题时关闭,javascript,jquery,html,toggle,Javascript,Jquery,Html,Toggle,小提琴: 情景: 我想在选项卡式容器中使用嵌套切换,就像在小提琴中一样 我的问题: 当我单击主切换(“切换1”)或(“切换2”)时,将显示内部内容。 但如果我点击里面的任何东西,它就会关闭。例如,如果我单击切换2,如果我单击选项卡1->嵌套切换1,切换2本身将关闭 我希望它保持开放 我猜: 如果单击了与切换相关的任何内容(甚至文本内容),JQuery工作将关闭切换 我的需要: 我只想在单击这些矩形标题时关闭切换 另外,如果您能以这样的方式帮助清理代码,我不需要编写单独的JS来使内部嵌套切换独立于
$('.toggle-view li').click(function () {
var text = $(this).children('.t');
if (text.is(':hidden')) {
text.slideDown('fast');
$(this).children('.toggle').addClass('tactive');
} else {
text.slideUp('fast');
$(this).children('.toggle').removeClass('tactive');
}
});
//切换L2
$('.toggle-view2 li').click(function () {
var text2 = $(this).children('.t2');
if (text2.is(':hidden')) {
text2.slideDown('fast');
$(this).children('.toggle2').addClass('tactive2');
} else {
text2.slideUp('fast');
$(this).children('.toggle2').removeClass('tactive2');
}
});
另外,我还没有写JS代码,我正在使用某人的模板
谢谢!:) 使用
event.stopPropagation()
我已经更新了JSFIDLE
$('.toggle-view2 li').click(function (event) {
event.stopPropagation();
var text2 = $(this).children('.t2');
if (text2.is(':hidden')) {
text2.slideDown('fast');
$(this).children('.toggle2').addClass('tactive2');
} else {
text2.slideUp('fast');
$(this).children('.toggle2').removeClass('tactive2');
}
});
使用
event.stopPropagation()
我已经更新了JSFIDLE
$('.toggle-view2 li').click(function (event) {
event.stopPropagation();
var text2 = $(this).children('.t2');
if (text2.is(':hidden')) {
text2.slideDown('fast');
$(this).children('.toggle2').addClass('tactive2');
} else {
text2.slideUp('fast');
$(this).children('.toggle2').removeClass('tactive2');
}
});
似乎是一个非常简单的解决方案 之所以会发生这种情况,是因为每当您单击
li
元素(包括其他切换元素:.toggle2
)中的任意一个元素时,切换当前都会激活
因此,解决方案是使其仅在单击.toggle
/h6
元素时激活切换,并将$(this).子项(…)
更改为$(this).同级(…)
您可以按原样使用以下内容(与切换
和切换L2
中的更改相同):
或
只需使用第一部分
//TOGGLE
$('.toggle-view li .toggle').click(function () {
var text = $(this).siblings('.t');
if (text.is(':hidden')) {
text.slideDown('fast');
$(this).addClass('tactive');
} else {
text.slideUp('fast');
$(this).removeClass('tactive');
}
});
并将
html
中的所有.t2
、.toggle2
等重命名为与第一个相同的名称(即.t2
变为.t
)似乎是一个非常简单的解决方案
之所以会发生这种情况,是因为每当您单击li
元素(包括其他切换元素:.toggle2
)中的任意一个元素时,切换当前都会激活
因此,解决方案是使其仅在单击.toggle
/h6
元素时激活切换,并将$(this).子项(…)
更改为$(this).同级(…)
您可以按原样使用以下内容(与切换
和切换L2
中的更改相同):
或
只需使用第一部分
//TOGGLE
$('.toggle-view li .toggle').click(function () {
var text = $(this).siblings('.t');
if (text.is(':hidden')) {
text.slideDown('fast');
$(this).addClass('tactive');
} else {
text.slideUp('fast');
$(this).removeClass('tactive');
}
});
并将
html
中的所有.t2
、.toggle2
等重命名为与第一个相同的名称(即.t2
变为.t
)尝试不将切换绑定应用于li
元素,而是将其添加到h6
,其切换的原因是,当您单击li元素中的任意位置时,它会再次触发切换事件。确实如此!带代码的答案由@Steven给出。哇,我开始喜欢使用jQuery了!尝试不将切换绑定应用于li
元素,而是将其添加到h6
,其切换的原因是当您单击li元素内的任何位置时,它会再次触发切换事件。这是真的!带代码的答案由@Steven给出。哇,我开始喜欢使用jQuery了!这实际上是我对整个问题的完整解答!这实际上是我对整个问题的完整解答!正在研究的主要问题的解决方案。同样谢谢你。但是我真的不希望它在点击li元素内部的任何东西时关闭!但是我已经知道这件事了;来自您的功能,非常感谢!正在研究的主要问题的解决方案。同样谢谢你。但是我真的不希望它在点击li元素内部的任何东西时关闭!但是我已经知道这件事了;来自您的功能,非常感谢!