Jquery类插入

时间:2015-04-10 19:03:27

标签: jquery magento

所以我继承了一些代码,对我来说,如何在需要它的地方插入两个类是不明显的。

所以我有三个相关的代码块,一些phtml,一些jquery和输出html

PHTML

<ol>
<?php foreach ($this->getItems() as $_item): ?>
    <li 

    /*<!-- class="jcorgFilterTextParent" -->*/

    >
        <?php if ($_item->getCount() > 0): ?>
            <a href="<?php echo $this->urlEscape($_item->getUrl()) ?>"

            /*<!--class="jcorgFilterTextChild"-->*/

             >
                <?php echo $_item->getLabel() ?>
                <?php if ($this->shouldDisplayProductCount()): ?>
                <span class="count">(<?php echo $_item->getCount() ?>)</span>
                <?php endif; ?>
            </a>
        <?php else: ?>
            <span>
                <?php echo $_item->getLabel(); ?>
                <?php if ($this->shouldDisplayProductCount()): ?>
                    <span class="count">(<?php echo $_item->getCount() ?>)</span>
                <?php endif; ?>
            </span>
        <?php endif; ?>
    </li>
<?php endforeach ?>
</ol>

如果我直接在这里插入类,我可以让第一次迭代顺利运行,但没有其他人。 jquery是我真的很困惑的地方。

  jQuery('.block-layered-nav .block-content #narrow-by-list dt').on('click', function (){
            if(jQuery(this).next('dd').css('display') != 'block'){
                jQuery('.active').slideUp('fast').removeClass('active');
                jQuery(this).next('dd').addClass('active').slideDown('slow');
            } else {
                jQuery('.active').slideUp('fast').removeClass('active');
            }


        });
    });

我希望能够插入类&#39; jcorgFilterParent&#39;和&#39; jcorgFilterText&#39;在jquery中,我不知道如何导航DOM以使它们在正确的位置。

最后只是针对某些情况

<div class="block block-layered-nav block-layered-nav--no-filters">
    <div class="block-title">
        <strong><span>Filter By</span></strong>
    </div>
    <div class="block-content toggle-content">
            <p class="block-subtitle block-subtitle--filter">Filter</p>
            <dl id="narrow-by-list">          
                <dt class="odd">Manufacturer</dt><dd class="odd">
                <input type="text" id="filter">
                <ol>
                    <li>
                    <a href="http://marssup1.nextmp.net/main.html?manufacturer=2664">3M<span class="count">(449)</span></a>
                    </li>
                    <li>
                    <a href="http://marssup1.nextmp.net/main.html?manufacturer=2665">Abanki Corp.<span class="count">(29)</span></a>
                    </li>

我真的是Jquery的新手所以任何建议真的很值得赞赏

2 个答案:

答案 0 :(得分:0)

我认为你只需要这样做:

查找#narrow-by-list中的所有内容,并将类添加到其中。

jQuery('#narrow-by-list li').addClass('jcorgFilterTextParent');

同样的想法,但是&lt; a&gt;标签

jQuery('#narrow-by-list li a').addClass('jcorgFilterText');

由于您在Magento工作,您可能希望使用原型代替:

$$('#narrow-by-list li').invoke('addClassName', 'jcorgFilterTextParent');
$$('#narrow-by-list li a').invoke('addClassName', 'jcorgFilterText');

答案 1 :(得分:0)

嘿,谢谢你帮我一起去了埃里克。这是解决方案:

模板\目录\导航\列表category.phtml

    //Script for filter navigation
    jQuery('.block-layered-nav .block-content #narrow-by-list dt').on('click', function (){
        if(jQuery(this).next('dd').css('display') != 'block'){
            jQuery('.active input').removeAttr('id');
            jQuery('.active li').removeClass('jcorgFilterTextParent');
            jQuery('.active a').removeClass('jcorgFilterTextChild');
            jQuery('.active').slideUp('fast').removeClass('active');

            jQuery(this).next('dd').addClass('active').slideDown('slow');
            jQuery('.active input').attr('id' ,'filter');
            jQuery('.active li').addClass('jcorgFilterTextParent');
            jQuery('.active a').addClass('jcorgFilterTextChild');
            jQuery("#filter").jcOnPageFilter({animateHideNShow: false,
                      focusOnLoad:true,
                      highlightColor:'yellow',
                      textColorForHighlights:'#000000',
                      caseSensitive:false,
                      hideNegatives:true,
                      parentLookupClass:'jcorgFilterTextParent',
                      childBlockClass:'jcorgFilterTextChild'});

        } else {
            jQuery('.active input').removeAttr('id');
            jQuery('.active li').removeClass('jcorgFilterTextParent');
            jQuery('.active a').removeClass('jcorgFilterTextChild');
            jQuery('.active').slideUp('fast').removeClass('active');

        }


    });
});