使用类找到的变量ID中的div

时间:2015-01-12 13:28:15

标签: jquery variables indexing jquery-selectors

我需要在div' myId '中的几个元素中添加各种ID,href和data-parent属性 - 我想在其中返回给定div的ID class:".template-none .section-accordion .accordion"

这里的障碍是我使用的系统是拖放式的,因此这些元素将根据用户决定添加的数量而变化。每个元素的ID都是在放置时创建的,但该类保持不变。

现在,这些内联,但在检查时似乎有index -1,这意味着它们可能不会被视为列出的元素。我考虑过使用.sibling但是在实施方面遇到了困难,因为在创建ID之前我不知道ID。

我目前正在使用它,但是,我在下面的jQuery只获取第一项的ID和索引,而不是单独设置每个实例的样式。我知道这可能是我错过的非常简单的事情。

总而言之,我想实现:

  1. 使用“template-none .section-accordion .accordion”类定位所有元素,并返回ID。
  2. 使用现在找到的变量ID,我想将子元素.accordion,.accordion-toggle和.accordion-body作为目标,以添加ID和元素。
  3. 确保"template-none .section-accordion .accordion"的每个实例都相对于其父项或单个项设置样式,并将其应用于"template-none .section-accordion .accordion"的所有实例,而不是基于每个ID。
  4. 我希望这是有道理的,非常感谢您的意见

    这是我到目前为止所拥有的:

    jQuery(window).load(function() {
    
        // sort accordions and add id's based on parents
    
        var index = jQuery( ".template-none section.section-accordion" ).index( this );
    
        var myId = jQuery(".template-none .section-accordion").prop("id");
    
        jQuery(".template-none .section-accordion .accordion").attr("id", myId + index)
        jQuery(".template-none .section-accordion .accordion-toggle").attr("data-parent", myId + index)
    
        jQuery(".template-none .section-accordion .accordion-body").attr("id", myId + index + 'body')
        jQuery(".template-none .section-accordion .accordion-toggle").attr("href", '#' + myId + index + 'body')
    
    });
    

1 个答案:

答案 0 :(得分:0)

首先是问题:

  • 您需要将每个部分作为当前上下文进行处理。目前,您的代码正在将document传递给index,因为这是DOM就绪的上下文。
  • 您在以#开头且无效的部分上有ID。

相反,请迭代您的部分(例如,使用each)并修改相对于该部分的后代元素(例如,使用该部分中的find)。

示例:

jQuery(function ($) {
    // sort accordions and add id's based on parents
    var index = jQuery(".template-none section.section-accordion").each(function (index) {
        var myId = $(this).attr('id');
        $(this).find(".accordion").attr("id", myId + index);
        $(this).find(".accordion-toggle").attr("data-parent", myId + index).attr("href", '#' + myId + index + 'body');
        $(this).find(".accordion-body").attr("id", myId + index + 'body');
    });
});

JSFiddle玩:http://jsfiddle.net/TrueBlueAussie/w1bg5gwq/7/

注意:

  • jQuery(function($){...});jQuery(document).ready(function(){...});的便捷快捷方式,它还提供了本地$变量,因此您可以使用更短的标准jQuery代码。
  • 虽然您要在每个部分的后代元素上生成唯一ID,但通常最好不要使用类。