Pomoc s JS scriptom

Blander

Pomoc s JS scriptom
« kdy: 07. 05. 2014, 15:20:13 »
Nazdar kedze js nie je moja silna stranka. (Vlastne ziadna) potreboval by som tip ako vyriesit nasledovny problem.
Na strankach tovarosobne.sk su kategorie ktore sa rozbaluju po klikniti na plus resp. minus. problem je ten ze sa mi hned zroluju s5.
Skusim som asi vsetko co ma napadlo ale ako vravim js nie je vobec moja parketa. Ak by sa nasla dobra dusa a pomohol by mi ma u mna pivo :)
Toto je problematicky kod
Kód: [Vybrat]
<div class="category">
                                   
<h1><strong><span class="category <?php echo osc_category_slug() ; ?>"></span><a href="<?php echo osc_search_category_url() ; ?>"><?php echo osc_category_name() ; ?></a><img style="float:right;"  src="<?php echo osc_current_web_theme_url('images/plus.png') ; ?>" alt="Collapsed" class="expand" id="plus_img<?php echo $cat_id?>" />  <span>(<?php echo osc_category_total_items() ; ?>)</span></strong></h1>
                                    <?php if ( osc_count_subcategories() > ) { ?>
                                        <ul class="subcategory">
                                            <?php while ( osc_has_subcategories() ) { ?>
                                                <li><a class="category <?php echo osc_category_slug() ; ?>" href="<?php echo osc_search_category_url() ; ?>"><?php echo osc_category_name() ; ?></a> <span>(<?php echo osc_category_total_items() ; ?>)</span> </li>
                                            <?php ?>
                                        </ul>
                                    <?php ?>
                                </div>
                                <?php
                                    
if (($col==&& $i==$col1_max_cat) || ($col==&& $i==$col2_max_cat) || ($col==&& $i==$col3_max_cat)) {
                                        
$i 1;
                                        
$col++;
                                        echo 
'</div>';
                                        if(
$x $total_categories) {
                                            echo 
'<div class="col c'.$col.'">';
                                        }
                                    } else {
                                        
$i++ ;
                                    }
                                    
$x++ ;
                                
?>

                            <?php ?>
                       </div>
 
                     
<script type="text/javascript">
    $(document).ready(function() {
        $('.subcategory').toggle();
        $('.expand').live('click',function(){
            $(this).parents('.category').find('.subcategory').slideToggle();
            if ($(this).attr("alt") == "Collapsed") {
                $(this).attr("alt", "Expanded").attr("src", "<?php echo osc_current_web_theme_url('images/minus.png') ; ?>");
            }
            else
            {
                $(this).attr("alt", "Collapsed").attr("src", "<?php echo osc_current_web_theme_url('images/plus.png') ; ?>");
            }
        });
    });
</script>
           


Jozef

Re:Pomoc s JS scriptom
« Odpověď #1 kdy: 07. 05. 2014, 15:31:24 »
Skus to takto:
Kód: [Vybrat]
<div class="category">
                                   
<h1><strong><span class="category <?php echo osc_category_slug() ; ?>"></span><a href="<?php echo osc_search_category_url() ; ?>"><?php echo osc_category_name() ; ?></a><img style="float:right;"  src="<?php echo osc_current_web_theme_url('images/plus.png') ; ?>" alt="Collapsed" class="" id="plus_img<?php echo $cat_id?>" />  <span>(<?php echo osc_category_total_items() ; ?>)</span></strong></h1>
                                    <?php if ( osc_count_subcategories() > ) { ?>
                                        <ul class="subcategory">
                                            <?php while ( osc_has_subcategories() ) { ?>
                                                <li><a class="category <?php echo osc_category_slug() ; ?>" href="<?php echo osc_search_category_url() ; ?>"><?php echo osc_category_name() ; ?></a> <span>(<?php echo osc_category_total_items() ; ?>)</span> </li>
                                            <?php ?>
                                        </ul>
                                    <?php ?>
                                </div>
                                <?php
                                    
if (($col==&& $i==$col1_max_cat) || ($col==&& $i==$col2_max_cat) || ($col==&& $i==$col3_max_cat)) {
                                        
$i 1;
                                        
$col++;
                                        echo 
'</div>';
                                        if(
$x $total_categories) {
                                            echo 
'<div class="col c'.$col.'">';
                                        }
                                    } else {
                                        
$i++ ;
                                    }
                                    
$x++ ;
                                
?>

                            <?php ?>
                       </div>
 
                     
<script type="text/javascript">
    $(document).ready(function() {
        $('.subcategory').toggle();
        $('.expand').live('click',function(){
            $(this).parents('.category').find('.subcategory').slideToggle();
            if ($(this).attr("alt") == "Collapsed") {
                $(this).attr("alt", "Expanded").attr("src", "<?php echo osc_current_web_theme_url('images/minus.png') ; ?>");
            }
            else
            {
                $(this).attr("alt", "Collapsed").attr("src", "<?php echo osc_current_web_theme_url('images/plus.png') ; ?>");
            }
        });
    });
</script>




Ale poviem ti je to riadny gulas, nechcel by som sa v tom hrabat  ::)

darkenik

Re:Pomoc s JS scriptom
« Odpověď #2 kdy: 07. 05. 2014, 16:31:37 »
mam taky mierny pocit, ze dvakrat volas toggle.

Kód: [Vybrat]
    $('.subcategory').toggle();
        $('.expand').live('click',function(){
            $(this).parents('.category').find('.subcategory').slideToggle();


jeden z nich skus zmazat.

Blander

Re:Pomoc s JS scriptom
« Odpověď #3 kdy: 08. 05. 2014, 08:18:27 »
Skusil som ten kod ani si to neskrtlo.
Kód: [Vybrat]
$('.subcategory').toggle();
        $('.expand').live('click',function(){
            $(this).parents('.category').find('.subcategory').slideToggle();
- je tam len raz.
No tak ci tak dakujem.

Inak je to open-source osclass system

v2kt0r

Re:Pomoc s JS scriptom
« Odpověď #4 kdy: 08. 05. 2014, 09:59:18 »
Proč to rozbalování a sbalování - včetně výměny obrázku +/- neřešíte přidáním a odebráním jediné třídy + CSS?


J

Re:Pomoc s JS scriptom
« Odpověď #5 kdy: 08. 05. 2014, 10:33:25 »
To prepinanie tam volas dvakrat. Raz tym kuskom kodu, ktory si postol a druhykrat je volane pri kliku na H1 element, v ktorom je aj ta zelena sipka. Problem pri kliku na obrazok je ze event kliknutia ti prebublava smerom hore az k H1 a tam ti to sposobi opatovne schovanie.
Tento riadok nahrad
Kód: [Vybrat]
$('.expand').live('click',function(){tymto:
Kód: [Vybrat]
$('.expand').live('click',function(event){
            event.stopPropagation();
Ostatne nechaj a malo by ti to funovat ako si predstavujes