Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2019, 12:48
Новичок на форуме
Отправить личное сообщение для maxthecreator Посмотреть профиль Найти все сообщения от maxthecreator
 
Регистрация: 03.04.2019
Сообщений: 5

Проблема с табами
Добрый день! Написал код на js для табов, но почему то не работает, можете посмотреть ошибки, либо дополнить,порекомендовать литературу и т.д., заранее спасибо)

Верста и код js:
<div class="products__content">
<!--<div class="products-type">-->
	<ul class="products-type__list">
		<li class="products-type__list-item">
		<!--<a href="" class="products-type__list-link">Бетон</a>-->
		Бетон
	        </li>
		<li class="products-type__list-item">
	<!--<a href="" class="products-type__list-ink">Растворы</a>-->										Растворы
        </li>
</ul>
<!--</div>-->
							<!-- Бетон -->
							<div class="products main-page__products-list products-carousel">
								<div class="card card_hover product-card main-page__product-card">
									<div class="product-title">
										<p class="product-name">Бетон</p>
										<p class="product-code">
											<span class="product-code_bold">М300</span> (B&#8209;20)											
										</p>
									</div>
									<p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
									<div class="product-card__price-wrapper">
										<p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
									</div>
									<div class="product-card__enter">
										<a href="product.html">
											<img src="images/icons/jump.svg" alt="">
										</a>
									</div>
								</div>
								<div class="card card_hover product-card main-page__product-card">
									<div class="product-title">
										<p class="product-name">Бетон</p>
										<p class="product-code">
											<span class="product-code_bold">М350</span> (B&#8209;15)											
										</p>
									</div>
									<p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
									<div class="product-card__price-wrapper">
										<p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
									</div>
									<div class="product-card__enter">
										<a href="product.html">
											<img src="images/icons/jump.svg" alt="">
										</a>
									</div>
								</div>
								<div class="card card_hover product-card main-page__product-card">
									<div class="product-title">
										<p class="product-name">Бетон</p>
										<p class="product-code">
											<span class="product-code_bold">М170</span> (B&#8209;35)											
										</p>
									</div>
									<p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
									<div class="product-card__price-wrapper">
										<p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
									</div>
									<div class="product-card__enter">
										<a href="product.html">
											<img src="images/icons/jump.svg" alt="">
										</a>
									</div>
								</div>
								<div class="card card_hover product-card main-page__product-card">
									<div class="product-title">
										<p class="product-name">Бетон</p>
										<p class="product-code">
											<span class="product-code_bold">М150</span> (B&#8209;7)
										</p>
									</div>
									<p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
									<div class="product-card__price-wrapper">
										<p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
									</div>
									<div class="product-card__enter">
										<a href="product.html">
											<img src="images/icons/jump.svg" alt="">
										</a>
									</div>
								</div>
							</div>
							<!-- Растворы -->
							<div class="products main-page__products-list owl-carousel products-carousel" style="display: none;">
								<div class="card card_hover product-card main-page__product-card">
									<div class="product-title">
										<p class="product-name">Раствор</p>
										<p class="product-code">
											<span class="product-code_bold">М300</span> (B&#8209;20)
										</p>
									</div>
									<p class="product-card__text">cxszcxНесущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
									<div class="product-card__price-wrapper">
										<p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
									</div>
									<div class="product-card__enter">
										<a href="product.html">
											<img src="images/icons/jump.svg" alt="">
										</a>
									</div>
								</div>
								<div class="card card_hover product-card main-page__product-card">
									<div class="product-title">
										<p class="product-name">Раствор</p>
										<p class="product-code">
											<span class="product-code_bold">М350</span> (B&#8209;15)											
										</p>
									</div>
									<p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
									<div class="product-card__price-wrapper">
										<p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
									</div>
									<div class="product-card__enter">
										<a href="product.html">
											<img src="images/icons/jump.svg" alt="">
										</a>
									</div>
								</div>
								<dive class="card card_hover product-card main-page__product-card">
									<div class="product-title">
										<p class="product-name">Раствор</p>
										<p class="product-code">
											<span class="product-code_bold">М170</span> (B&#8209;35)											
										</p>
									</div>
									<p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
									<div class="product-card__price-wrapper">
										<p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
									</div>
									<div class="product-card__enter">
										<a href="product.html">
											<img src="images/icons/jump.svg" alt="">
										</a>
									</div>
								</dive>
								<div class="card card_hover product-card main-page__product-card">
									<div class="product-title">
										<p class="product-name">Раствор</p>
										<p class="product-code">
											<span class="product-code_bold">М150</span> (B&#8209;7)
										</p>
									</div>
									<p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
									<div class="product-card__price-wrapper">
										<p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
									</div>
									<div class="product-card__enter">
										<a href="product.html">
											<img src="images/icons/jump.svg" alt="">
										</a>
									</div>
								</div>
							</div>
							<a href="catalog.html" class="btn btn_dark products__btn">Смотреть каталог</a>
							<div class="slider-arrows products__slider-arrows">
								<div class="slider-btn slider-btn_prev"></div>
								<div class="slider-btn slider-btn_next"></div>
							</div>
						</div>


(function($){				
    jQuery.fn.lightTabs = function(options){
        
        var createTabs = function(){
            tabs = this;
            i = 0;
            
            showPage = function(i){
                $(tabs).children(".products__content").children(".products").eq(i).hide();
                $(tabs).children(".products__content").children(".products").eq(i).show();
                $(tabs).children("ul").children("li").removeClass("active");
                $(tabs).children("ul").children("li").eq(i).addClass("active");
            }
            
            showPage(0);				
            
            $(tabs).children("ul").children("li").each(function(index, element){
                $(element).attr("data-page", i);
                i++;                        
            });
            
            $(tabs).children("ul").children("li").click(function(){
                showPage(parseInt($(this).attr("data-page")));
            });				
        };		
        return this.each(createTabs);
    };	
})(jQuery);
$(document).ready(function(){
    $(".products__content").lightTabs();
});
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2019, 13:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

maxthecreator,
c children перебор в строках 9 - 10, attr в данном случае лучше заменить на data("page", index);
и делайте пример целиком.
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2019, 13:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

maxthecreator,
(function($){
    jQuery.fn.lightTabs = function(options){
        var createTabs = function(){
        var tabs = this,
        showPage = function(i){
                blocks.hide()
                .eq(i).show();
                li.removeClass("active")
                .eq(i).addClass("active");
            },
        li = $(">ul li", tabs).each(function(index, element){$(element).click(showPage.bind(null,index))}) ,
        blocks = $(">.products", tabs);
        showPage(0);
        };
        return this.each(createTabs);
    };
})(jQuery);
Ответить с цитированием
  #4 (permalink)  
Старый 13.04.2019, 13:43
Новичок на форуме
Отправить личное сообщение для maxthecreator Посмотреть профиль Найти все сообщения от maxthecreator
 
Регистрация: 03.04.2019
Сообщений: 5

Не понял в чем именно заключается перебор в строках 9 - 10, ваш код попробовал вставить, но также не работает
Ответить с цитированием
  #5 (permalink)  
Старый 13.04.2019, 13:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

maxthecreator,
$(tabs).children(".products__content").childrenfind(".products").eq(i).hide();
$(tabs).children(".products__content").childrenfind(".products").eq(i).show();
Ответить с цитированием
  #6 (permalink)  
Старый 13.04.2019, 14:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от maxthecreator
код попробовал вставить, но также не работает
что не так?
<!DOCTYPE html>

<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
       .active{
           background-color: #F0E68C;
       }

    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

    <script>
(function($){
    jQuery.fn.lightTabs = function(options){
        var createTabs = function(){
        var tabs = this,
        showPage = function(i){
                blocks.hide()
                .eq(i).show();
                li.removeClass("active")
                .eq(i).addClass("active");
            },
        li = $(">ul li", tabs).each(function(index, element){$(element).click(showPage.bind(null,index))}) ,
        blocks = $(">.products", tabs);
        showPage(0);
        };
        return this.each(createTabs);
    };
})(jQuery);
$(document).ready(function(){
    $(".products__content").lightTabs();
});

    </script>
</head>

<body>
<div class="products__content">
<!--<div class="products-type">-->
    <ul class="products-type__list">
        <li class="products-type__list-item">
        <!--<a href="" class="products-type__list-link">Бетон</a>-->
        Бетон
            </li>
        <li class="products-type__list-item">
    <!--<a href="" class="products-type__list-ink">Растворы</a>-->										Растворы
        </li>
</ul>
<!--</div>-->
                            <!-- Бетон -->
                            <div class="products main-page__products-list products-carousel">
                                <div class="card card_hover product-card main-page__product-card">
                                    <div class="product-title">
                                        <p class="product-name">Бетон</p>
                                        <p class="product-code">
                                            <span class="product-code_bold">М300</span> (B&#8209;20)
                                        </p>
                                    </div>
                                    <p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
                                    <div class="product-card__price-wrapper">
                                        <p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
                                    </div>
                                    <div class="product-card__enter">
                                        <a href="product.html">
                                            <img src="images/icons/jump.svg" alt="">
                                        </a>
                                    </div>
                                </div>
            </div>
                            <!-- Растворы -->
                            <div class="products main-page__products-list owl-carousel products-carousel" style="display: none;">
                                <div class="card card_hover product-card main-page__product-card">
                                    <div class="product-title">
                                        <p class="product-name">Раствор</p>
                                        <p class="product-code">
                                            <span class="product-code_bold">М300</span> (B&#8209;20)
                                        </p>
                                    </div>
                                    <p class="product-card__text">cxszcxНесущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
                                    <div class="product-card__price-wrapper">
                                        <p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
                                    </div>
                                    <div class="product-card__enter">
                                        <a href="product.html">
                                            <img src="images/icons/jump.svg" alt="">
                                        </a>
                                    </div>
                                </div>

                            </div>
                            <a href="catalog.html" class="btn btn_dark products__btn">Смотреть каталог</a>
                            <div class="slider-arrows products__slider-arrows">
                                <div class="slider-btn slider-btn_prev"></div>
                                <div class="slider-btn slider-btn_next"></div>
                            </div>
                        </div>

</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 13.04.2019, 14:10
Новичок на форуме
Отправить личное сообщение для maxthecreator Посмотреть профиль Найти все сообщения от maxthecreator
 
Регистрация: 03.04.2019
Сообщений: 5

Сообщение от рони Посмотреть сообщение
что не так?
<!DOCTYPE html>

<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
       .active{
           background-color: #F0E68C;
       }

    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

    <script>
(function($){
    jQuery.fn.lightTabs = function(options){
        var createTabs = function(){
        var tabs = this,
        showPage = function(i){
                blocks.hide()
                .eq(i).show();
                li.removeClass("active")
                .eq(i).addClass("active");
            },
        li = $(">ul li", tabs).each(function(index, element){$(element).click(showPage.bind(null,index))}) ,
        blocks = $(">.products", tabs);
        showPage(0);
        };
        return this.each(createTabs);
    };
})(jQuery);
$(document).ready(function(){
    $(".products__content").lightTabs();
});

    </script>
</head>

<body>
<div class="products__content">
<!--<div class="products-type">-->
    <ul class="products-type__list">
        <li class="products-type__list-item">
        <!--<a href="" class="products-type__list-link">Бетон</a>-->
        Бетон
            </li>
        <li class="products-type__list-item">
    <!--<a href="" class="products-type__list-ink">Растворы</a>-->										Растворы
        </li>
</ul>
<!--</div>-->
                            <!-- Бетон -->
                            <div class="products main-page__products-list products-carousel">
                                <div class="card card_hover product-card main-page__product-card">
                                    <div class="product-title">
                                        <p class="product-name">Бетон</p>
                                        <p class="product-code">
                                            <span class="product-code_bold">М300</span> (B&#8209;20)
                                        </p>
                                    </div>
                                    <p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
                                    <div class="product-card__price-wrapper">
                                        <p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
                                    </div>
                                    <div class="product-card__enter">
                                        <a href="product.html">
                                            <img src="images/icons/jump.svg" alt="">
                                        </a>
                                    </div>
                                </div>
            </div>
                            <!-- Растворы -->
                            <div class="products main-page__products-list owl-carousel products-carousel" style="display: none;">
                                <div class="card card_hover product-card main-page__product-card">
                                    <div class="product-title">
                                        <p class="product-name">Раствор</p>
                                        <p class="product-code">
                                            <span class="product-code_bold">М300</span> (B&#8209;20)
                                        </p>
                                    </div>
                                    <p class="product-card__text">cxszcxНесущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
                                    <div class="product-card__price-wrapper">
                                        <p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
                                    </div>
                                    <div class="product-card__enter">
                                        <a href="product.html">
                                            <img src="images/icons/jump.svg" alt="">
                                        </a>
                                    </div>
                                </div>

                            </div>
                            <a href="catalog.html" class="btn btn_dark products__btn">Смотреть каталог</a>
                            <div class="slider-arrows products__slider-arrows">
                                <div class="slider-btn slider-btn_prev"></div>
                                <div class="slider-btn slider-btn_next"></div>
                            </div>
                        </div>

</body>
</html>
Работает, но вот когда нажимаю на ссылку Растворы включается display: block; , а мне нужно чтоб включался display:flex; , как это исправить?
Ответить с цитированием
  #8 (permalink)  
Старый 13.04.2019, 14:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

maxthecreator,
уберите hide и show сделайте class
<!DOCTYPE html>

<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
       .active{
           background-color: #F0E68C;
       }
      .products.active{
          display: flex;
      }
      .products{
          display: none;
       }

    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

    <script>
(function($){
    jQuery.fn.lightTabs = function(options){
        var createTabs = function(){
        var tabs = this,
        showPage = function(i){
                blocks.removeClass("active")
                .eq(i).addClass("active");
                li.removeClass("active")
                .eq(i).addClass("active");
            },
        li = $(">ul li", tabs).each(function(index, element){$(element).click(showPage.bind(null,index))}) ,
        blocks = $(">.products", tabs);
        showPage(0);
        };
        return this.each(createTabs);
    };
})(jQuery);
$(document).ready(function(){
    $(".products__content").lightTabs();
});

    </script>
</head>

<body>
<div class="products__content">
<!--<div class="products-type">-->
    <ul class="products-type__list">
        <li class="products-type__list-item">
        <!--<a href="" class="products-type__list-link">Бетон</a>-->
        Бетон
            </li>
        <li class="products-type__list-item">
    <!--<a href="" class="products-type__list-ink">Растворы</a>-->										Растворы
        </li>
</ul>
<!--</div>-->
                            <!-- Бетон -->
                            <div class="products main-page__products-list products-carousel">
                                <div class="card card_hover product-card main-page__product-card">
                                    <div class="product-title">
                                        <p class="product-name">Бетон</p>
                                        <p class="product-code">
                                            <span class="product-code_bold">М300</span> (B&#8209;20)
                                        </p>
                                    </div>
                                    <p class="product-card__text">Несущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
                                    <div class="product-card__price-wrapper">
                                        <p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
                                    </div>
                                    <div class="product-card__enter">
                                        <a href="product.html">
                                            <img src="images/icons/jump.svg" alt="">
                                        </a>
                                    </div>
                                </div>
            </div>
                            <!-- Растворы -->
                            <div class="products main-page__products-list owl-carousel products-carousel" >
                                <div class="card card_hover product-card main-page__product-card">
                                    <div class="product-title">
                                        <p class="product-name">Раствор</p>
                                        <p class="product-code">
                                            <span class="product-code_bold">М300</span> (B&#8209;20)
                                        </p>
                                    </div>
                                    <p class="product-card__text">cxszcxНесущие стены, плиты перекрытий, балки, колонны, фундаменты</p>
                                    <div class="product-card__price-wrapper">
                                        <p class="price product-card__price">От<br><span class="price__value">2750</span> руб./&nbsp;м3</p>
                                    </div>
                                    <div class="product-card__enter">
                                        <a href="product.html">
                                            <img src="images/icons/jump.svg" alt="">
                                        </a>
                                    </div>
                                </div>

                            </div>
                            <a href="catalog.html" class="btn btn_dark products__btn">Смотреть каталог</a>
                            <div class="slider-arrows products__slider-arrows">
                                <div class="slider-btn slider-btn_prev"></div>
                                <div class="slider-btn slider-btn_next"></div>
                            </div>
                        </div>

</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 13.04.2019, 14:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

maxthecreator,
не копируйте сообщение целиком.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена background при нажатии JIeuTo Общие вопросы Javascript 5 14.09.2018 18:48
Проблема при изменение типа в Store на ajax Ambassador ExtJS 2 06.09.2018 23:59
Проблема с радио кнопками px379 Общие вопросы Javascript 8 29.07.2013 09:30
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12