закрытие при клике в body
Добра всем!
Делаю малую корзину в битриксе, пытаюсь обновлять значения с помощью аякса, вроде все получается, кроме одного. Вот что написалось:
$(document).ready(function(){
showBasketLine();
showBasketSmall();
$(".storeBuy a").click(showBasketLine);
});
function showSmallBasket() {
if($(".basketSmallBox").is(":visible")){
$(".basketSmallBox").removeClass("shower").hide();
} else if ($(".basketSmallBox").is(":hidden")) {
showBasketSmall();
$(".basketSmallBox").addClass("shower").show();
}
}
function showBasketLine() {
$.ajax({
url: "/bitrix/templates/imperia.Pallet/include_areas/ajax.handler.php",
type: "GET",
cache: true,
timeout: 1000,
data: "block=basketLine",
dataType: "html",
success: function(data){
$('.basketLineBox').html(data)
}
});
}
function showBasketSmall() {
$.ajax({
url: "/bitrix/templates/imperia.Pallet/include_areas/ajax.handler.php",
type: "GET",
cache: true,
timeout: 1000,
data: "block=basketSmall",
dataType: "html",
success: function(data){
$('.basketSmallBox').html(data)
}
});
}
showSmallBasket() это функция вызываемая этой ссылкой <a href="<?=$arParams["PATH_TO_BASKET"]?>" onclick="showSmallBasket(); return false;">...</a>. Когда жмешь на ссылку, появляется блок с малой корзиной, жмешь на ссылку еще раз и малая корзина закрывается, и осталось только доделать закрытие малой корзины при щелчке в любом месте кроме малой корзины. Помогите мне пожалуйста доделать. |
В момент открытия корзины навешивать обработчик click на body (или на document). В обработчике проверяешь предков - если есть корзина (то есть клик пришелся по корзине), то игнорируешь клик. Иначе закрываешь корзину.
По закрытию корзины снимаешь обработчик. |
Вот html
<div id="headerTel" class="basketHeader"> <div class="basketLineBox"> <div class="basketLine"> <a href="cart" onclick="showSmallBasket(); return false;">В корзине <b>1</b> товар</a> </div> </div> <div class="basketSmallBox" style="display: none;"> <div class="basketSmall"> <h3>Позиции в Вашей корзине:</h3> <div class="basketSmallConteiner"> <a href="/store/pallet/poddon_1200kh800_gost_9078/" title="Поддон 1200х800 ГОСТ 9078-84">Поддон 1200х800 ГОСТ 9078-84</a> Цена: 120.00 руб. Количество: 21.00 </div> <form method="get" action="/p/cart"> <input type="submit" value="Изменить количество"> </form> <form method="get" action="/p/order"> <input type="submit" value="Оформить заказ"> </form> </div> </div> </div> danik.js, Я кучу всего перепробовал, в голове путаница, можете пожалуйста написать пример? |
Цитата:
Мож кто поможет. А лучше не жди а пробуй сам. Хотя бы попытайся (и показывай код) |
На сегодня мои мозги зашились. Тогда если мне завтра квота не выпадет, буду дальше танцевать с бубном.
|
Можно сделать проще: при открытии корзины, ставить на body фиксированный прозрачный div на весь экран, при клике на этот div закрыть корзину и удалять этот div.
|
а не проще ли всего написать event.stopPropagation()?
|
По-моему битрикс такая байда, где никакой корзины не надо. Или при чем тут вообще битрикс?
По теме. Слушайте предыдущего оратора. Всего лишь требуется не пропустить событие к боди и тогда в функции на щелчке по туловищу кроме прочего тупо вырубать заранее известный контейнер из видимости. |
А в той ссылке - по которой типа щелкают чтобы закрыть типа корзину - допускать это самое событие до туловища. Улавливаете?
Про битрикс. Что такое корзина? Это фильтр из всего ассортимента по критерию активный заказ больше 0. |
$(document).ready(function(){
showBasketLine();
showBasketSmall();
$(".storeBuy a").click(showBasketLine);
});
$("html").click(function() {
if($(".basketSmallBox").is(":visible")){
$(".basketSmallBox").removeClass("shower").hide();
}
});
function showSmallBasket(event) {
if($(".basketSmallBox").is(":visible")){
$(".basketSmallBox").removeClass("shower").hide();
} else if ($(".basketSmallBox").is(":hidden")) {
showBasketSmall();
$(".basketSmallBox").addClass("shower").show();
event.stopPropagation();
}
}
function showBasketLine() {
$.ajax({
url: "/bitrix/templates/imperia.Pallet/include_areas/ajax.handler.php",
type: "GET",
cache: true,
timeout: 1000,
data: "block=basketLine",
dataType: "html",
success: function(data){
$('.basketLineBox').html(data)
}
});
}
function showBasketSmall() {
$.ajax({
url: "/bitrix/templates/imperia.Pallet/include_areas/ajax.handler.php",
type: "GET",
cache: true,
timeout: 1000,
data: "block=basketSmall",
dataType: "html",
success: function(data){
$('.basketSmallBox').html(data)
}
});
}
Не работает(( |
| Часовой пояс GMT +3, время: 14:13. |