Присвоение класса после нажатия
Всем привет.
В общем у меня на сайте стоит боковая панель с корзиной у которой присвоен класс .is-hidden и при нажатии он убирается и панель выходит: http://empire-taste.16mb.com Как сделать чтобы класс .is-hidden распространялся только на тег с классом .mcart-panel ? в данный момент класс .is-hidden присваивается к тегу с классом .mcart-panel и тегу .mcart которая ниже. Функционал панели: empire-taste.16mb.com/templates/et/js/script.js
$(document).ready(function($) {
var closeBtn = jQuery('#mcart-close'),
panel = closeBtn.parent();
setTimeout(function(){ panel.addClass('is-hidden'); }, 150);
closeBtn.on('click', function(){ panel.toggleClass('is-hidden'); })
});
$(document).mouseup(function (e) {
var container = $(".mcart-panel");
if (container.has(e.target).length === 0){
$(".mcart-panel").addClass("is-hidden");
}
});
|
кто нибудь помогите, уже 2 день голову ломаю
|
Цитата:
$(document).mouseup(function (e) не понятно почему вне $(document).ready(function($)? |
Цитата:
Но как только я ставлю span содержимое внутри тега mcart тогда класс is-hidden присваивается к .mcart-panel и ко второму "внутреннему" тегу .mcart |
Цитата:
Или поясняйте на примере html кода чего вы хотите, иначе ничего не понять. |
Цитата:
Изначально у тега mcart-panel есть is-hidden (по шаблону) а у mcart нет. но когда открываешь сайт то к mcart тоже присваивается класс is-hidden <div class="mcart-panel is-hidden"> <div class="mcart"> <!-- кнопка боковой панели --> <span class="mcart-close" id="mcart-close"><i class="fa fa-shopping-cart"></i> <b>Корзина товаров</b></span> <!-- кнопка боковой панели --> <div class="features-panel"> содержимое корзины товаров </div> </div> </div> .is-hidden присваивается к обоим классам. Помогите сделать так чтобы боковая панель работала нормально как в начале так и после добавления товара в корзину. И всё у меня больше нет проблем. |
$(document).ready(function($) {
var closeBtn = jQuery('#mcart-close'),
panel = closeBtn.parent();
setTimeout(function(){ panel.addClass('is-hidden'); }, 150);
closeBtn.on('click', function(){ panel.toggleClass('is-hidden'); })
});
вот этот код надо править? |
Это из отладчика:
Ошибка карты кода: request failed with status 404 URL ресурса: http://empire-taste.16mb.com/templat.../jquery.min.js URL карты кода: jquery-1.10.2.min.map Вопрос: зачем попытка его подключения, если ранее JQ уже подключен - <script type="text/javascript" src="/engine/classes/js/jquery.js"></script>? Что означает это: а) в файле sript.js
$(document).ready(function($) {
var closeBtn = jQuery('#mcart-close'),
panel = closeBtn.parent();
setTimeout(function(){ panel.addClass('is-hidden'); }, 150);
closeBtn.on('click', function(){ panel.toggleClass('is-hidden'); })
});
$(document).mouseup(function (e) {
var container = $(".mcart-panel");
if (container.has(e.target).length === 0){
$(".mcart-panel").addClass("is-hidden");
}
});
б) в файле mcart.js
$(document).ready(function($) {
var closeBtn = jQuery('#mcart-close'),
panel = closeBtn.parent();
setTimeout(function(){ panel.addClass('is-hidden'); }, 150);
closeBtn.on('click', function(){ panel.toggleClass('is-hidden'); })
});
$(document).mouseup(function (e) {
var container = $(".mcart-panel");
if (container.has(e.target).length === 0){
$(".mcart-panel").addClass("is-hidden");
}
})
Какой из них верен? $(document).ready(function($) ... это обработчик готовности DOM, и достаточно один раз прописать это в коде, где устанавливать обработчики на элементы, то есть $(document).mouseup(function (e) должен быть в $(document).ready(function($), причем в файле sript.js он уже прописан. Но, ремируйте пока то что в sript.js, а далее что это за бардак разбирайтесь сами. Считаем, что рабочий, это mcart.js. Этот файл подключается в конце страницы, то есть в данном случае $(document).ready(function($) можно и забыть, к этому моменту ваша кнопка уже есть. А теперь разбор полетов: closeBtn = jQuery('#mcart-close') - это кнопка panel = closeBtn.parent() - это родитель кнопки Что является родителем кнопки? Смотрите на свой html. А ее родитель <div class="mcart">. Так чему вы добавляете класс, с которым боретесь, вот тут: panel.addClass('is-hidden') и panel.toggleClass('is-hidden')? Вот это setTimeout(function(){ panel.addClass('is-hidden'); }, 150); пока вообще выбросим, если вы хотите при загрузке страницы показать что в корзине, то времени 150 мс явно недостаточно. А если нет, то выбросить к чертовой матери - присвоить класс "по умолчанию" можно и на стороне сервера при запросе страницы. И так, в коде mcart.js должно быть только:
$('#mcart-close').click(function() {
$(this).closest('.mcart-panel').toggleClass('is-hidden')
})
Проверяйте, щелкайте, etc. Это нужно? А далее уже добавляйте иное, $(document).mouseup...., только, если: var container = $(".mcart-panel"); то зачем же получать ее еще раз:
if (container.has(e.target).length === 0){
$(".mcart-panel").addClass("is-hidden");
}
используйте уже полученное:
$(document).mouseup(function (e) {
var container = $(".mcart-panel");
if (!container.has(e.target).length) container.addClass("is-hidden");
});
|
laimas в файле sript.js я ещё вчера убрал все от панели.
и сделал для в отдельном файле mcart.js сделал как вы сказали. боковая панель открывается и закрывается, но теперь после добавления товара или увеличения кол-ва, кнопка не кликаетЦа |
как теперь быть? я так понял теперь уже http://empire-taste.16mb.com/templat...assets/libs.js виновата?
и почему у меня при увеличении кол-ва просит подтверждения действия "не указан ID товара" ? если я его указываю:
<div class="project-post col-md-4 col-sm-6 col-xs-12">
<div class="triggerAnimation animated ani-1-2 bounce" data-animate="bounce">
<img src="[xfvalue_image_url_img]" alt="">
<div class="hover-box">
<a class="zoom" href="[xfvalue_image_url_img]" title="{title}" title=""><i class="fa fa-search"></i></a>
</div>
<h3>{title}</h3>
<p>{short-story}</p>
<div class="price-box">
<ul class="cart-fast-add ignore-select">
<li class="col-25">[xfvalue_price] ₽</li>
<li class="col-25">[xfvalue_weight]гр</li>
<li class="cart-count">
<span class="cart-count-minus">-</span>
<input type="text" value="1" class="cart-count-val" />
<span class="cart-count-plus">+</span>
</li>
<li class="col-50"><button type="button" class="cart-fast-add-do btn btn-danger" data-id="{news-id}">Купить</button></li>
</ul>
</div>
</div>
</div>
Не могу понять в чем теперь проблема. Почему после добавления или увеличения товара панель перестает вылазить? И почему появляется уведомление о "не указанном ID" ? В консоли ни одной ошибки не выдает |
| Часовой пояс GMT +3, время: 22:39. |