Javascript jQuery-根据活动Div中元素的实例数创建列
我正在使用一个插件,我没有访问HTML的权限,但是我可以添加CSS和Javascript。我希望做到以下几点:Javascript jQuery-根据活动Div中元素的实例数创建列,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在使用一个插件,我没有访问HTML的权限,但是我可以添加CSS和Javascript。我希望做到以下几点: 检查具有特定类别的div是否处于活动状态 如果“活动”,则查找元素中标签的所有实例 对于放入一列的8个元素实例的所有组(父容器的33%宽度) 如果少于8,则什么也不做 我尝试了很多不同的方法,但我很挣扎。以下是迄今为止我的代码示例: 函数columnSnap(){ $('.productFilter')。每个(函数(){ 如果($(this).is(“:可见”)){ $(this.f
函数columnSnap(){
$('.productFilter')。每个(函数(){
如果($(this).is(“:可见”)){
$(this.find('label').addClass('randomClass');
如果($('.randomClass')。长度>=8){
//在创建的div中获取接下来的8个实例和组
//继续,直到randomClass的实例数完成
}
}
});
}
columnSnap()代码>
我正在为此添加解决方案,但我想指出您代码中的一个基本缺陷。
表示if($('.randomClass').length>=8{
的行不正确。
这是不正确的,因为它将统计标签的总数。
这可能是错误的,因为我相信您的意图是处理每个产品过滤器中的8个标签组
假设有2个productFilter div,第一个有5个标签,第二个有4个标签。根据您的意图,它们不应该分组在一起,因为每个productFilter div中的标签数小于8。但是它们将不正确地分组在一起,因为上面提到的代码将总标签数计为9(5+4)即>8
因此,该部分应改为:
if ($(this).find('.randomClass').length >= 8)
好的,现在解释一下。我把代码片段放在下面。下面是相同的示例
函数columnSnap(){
jQuery('.productFilter')。每个(函数(){
i=0;
if(jQuery(this).is(“:visible”)){
jQuery(this).find('label').addClass('randomClass');
lenChild=jQuery(this).find('.randomClass').length;
如果(lenChild>=8){
var parentContainer=jQuery(this);
v2=(数学楼层(lenChild/8)*8);
parentElem=0;
jQuery(this).find('.randomClass').each(function(){
如果(i
.productFilter{
边框:2个实心#ccc;
利润率:20px0;
}
.随机分组{
显示:内联块;
填充:10px;
最小宽度:10px;
保证金:5px;
背景:红色;
}
.实例持有者{
边框:2倍纯绿;
利润率:10px0;
}
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
17
18
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
Move
应该是。productFilter
@gaganshera啊,是的,那是在我的原始代码中,现在刚刚修改了这个。@mplungjan我能够找到元素何时可见,然后分配类,这是8的分组,创建了一列,这让我感到困惑…分组是什么意思?只要做一个$('.randomClass')).each
在您的if条件下循环元素。@gaganshera我想将每8个实例放入一个将动态创建的div中。如果没有8个实例,我希望函数什么也不做……Hi@shariqkhan谢谢,但是我没有访问HTML的权限,这意味着添加instancecontainer和instanceHolder be有问题。不确定上面的答案是否反映了这一点?有什么想法吗?谢谢你的帮助,答案是有效的。如果可能的话,只是一个后续问题。如果我有一个标签,然后是一个div,我将如何实现同样的目标,然后继续。这样我就可以在每次评估时将这两个元素添加到新的instanceHolder中?谢谢e、 您可以使用以下行之一:1.jQuery(this).prev('div').appendTo(jQuery(parentElem));2.jQuery(this).next('div').appendTo(jQuery(parentElem));3.jQuery(this).兄弟姐妹('div').eq(0).appendTo(jQuery(parentElem));使用第1行,如果您确定div将出现在标签之前,则使用第2行;如果您确定div将出现在标签之后,则使用第3行;如果您不确定div和标签的相对顺序,则无论您决定使用哪一行,都应附加到此行:jQuery(this).appendTo(jQuery(parentElem));