Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Blander 07. 05. 2014, 15:20:13

Název: Pomoc s JS scriptom
Přispěvatel: Blander 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>
           
Název: Re:Pomoc s JS scriptom
Přispěvatel: Jozef 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  ::)
Název: Re:Pomoc s JS scriptom
Přispěvatel: darkenik 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.
Název: Re:Pomoc s JS scriptom
Přispěvatel: Blander 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
Název: Re:Pomoc s JS scriptom
Přispěvatel: v2kt0r 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?
Název: Re:Pomoc s JS scriptom
Přispěvatel: J 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