Javascript 如何切换动态创建的div';基于类和名称属性,修改了吗?
以下是我的参考代码:Javascript 如何切换动态创建的div';基于类和名称属性,修改了吗?,javascript,jquery,css,Javascript,Jquery,Css,以下是我的参考代码: $('#main_div').on('click','.gclass', function(){ $(this).css('color','#0088cc'); if($(this).next().hasClass('gclass2') || $(this).next().next().hasClass('gclass3')){ console.log('1st child or 2nd child');
$('#main_div').on('click','.gclass', function(){
$(this).css('color','#0088cc');
if($(this).next().hasClass('gclass2') || $(this).next().next().hasClass('gclass3')){
console.log('1st child or 2nd child');
$(this).parent().find('.gclass2,.gclass3').slideToggle();
}
return false;
});
我动态创建了两个div,它们具有相同的类“.gclass”。
当我点击“.gclass”时,带有“.gclass2”和“.gclass3”的div被切换
当我点击class.gclass的一个div时,另一个div having.gclass也被切换,我不想这样做
请给我任何提示
对于CSS,我尝试过:
$(".gclass").not(this).css("color", "#6e6e6e");
但是对于slideToggle()可以做什么?对于slideToggle()
您可以编写自定义过滤器,过滤掉您的元素:
var that = this;
$(this).parent().find('.gclass2,.gclass3').filter(function() {
return $(this).prev()[0] === that || $(this).prev().prev()[0] === that
}).slideToggle();
工作示例请参见此处:您可以添加html以查看其结构吗?以下内容适用。-(这)是单击的对象,因此无需使用
.parent()
<代码>$(this).find('.gclass2.gclass3').slideToggle()代码>$(this).parent().find('.gclass2.gclass3').slideToggle(“slow”);这是行不通的。这是我的html结构。但我是动态地这样做的。此引用链接具有静态HTML结构。如果我增加或减少每个div中的项目,那么如何处理slideToggle中的这个问题?@Nicolas Marengo:我按照您的示例对div进行了更改。现在对我来说很好。非常感谢,谢谢。但是我会改变每个分区的项目数量。那么在这种情况下我能做什么呢?@eegloo您的DOM结构有几个问题:1。gclass
和gclassN
(其中N是数字)都在同一水平上,没有任何东西可以包裹每组;2.所有gclassN
元素之间没有共享类。解决这些问题会让你的生活更轻松。不过,对于您的情况也有一个解决方案,我在DOM中做了一些更改。div.gclass是父div,其他div.gclassN是div.gclass的子级。因此,使用“”解决了我的项目需求。实际上,我想对同一级别的div执行此操作。你的回答也很好。谢谢。