Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-根据活动Div中元素的实例数创建列_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript jQuery-根据活动Div中元素的实例数创建列

Javascript jQuery-根据活动Div中元素的实例数创建列,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在使用一个插件,我没有访问HTML的权限,但是我可以添加CSS和Javascript。我希望做到以下几点: 检查具有特定类别的div是否处于活动状态 如果“活动”,则查找元素中标签的所有实例 对于放入一列的8个元素实例的所有组(父容器的33%宽度) 如果少于8,则什么也不做 我尝试了很多不同的方法,但我很挣扎。以下是迄今为止我的代码示例: 函数columnSnap(){ $('.productFilter')。每个(函数(){ 如果($(this).is(“:可见”)){ $(this.f

我正在使用一个插件,我没有访问HTML的权限,但是我可以添加CSS和Javascript。我希望做到以下几点:

  • 检查具有特定类别的div是否处于活动状态
  • 如果“活动”,则查找元素中标签的所有实例
  • 对于放入一列的8个元素实例的所有组(父容器的33%宽度)
  • 如果少于8,则什么也不做
  • 我尝试了很多不同的方法,但我很挣扎。以下是迄今为止我的代码示例:

    函数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));