Birkaç e.stopPropagation()
olaylar belli elemanlar için kabardığını gelen tıklamaları önlemek için gidiş var. Buranın stopPropagation()
işleyicisi ile ilgisi var eminimSitenin herhangi bir yerinde herhangi bir yere tıklamak jquery .apply hatasına neden olur, neden?
Uncaught TypeError: ((m.event.special[e.origType] || (intermediate value)).handle || e.handler).apply is not a function
: Ama şimdi her şey burada konsolunda bu hatayı alıyorum, bu sayfalarda, bu unsurların yanı sıra, herhangi bir şey tıklayarak görünüyor , ancak bunu tam olarak nasıl düzeltebilirim, bu işlevlerin ön planda düzgün çalışması için, bu elemanlarda stopPropagation()
işlevine ihtiyacım var. belge üzerinde herhangi bir yere kapalı tıklandığında kadar
var mainMenu = $(".menuMain");
if (mainMenu.length) {
var clonedMain = mainMenu.clone(true, true),
baseLogo = clonedMain.find('.logoMenu').find('.base-logo'),
scrollLogo = clonedMain.find('.logoMenu').find('.scroll-logo');
clonedMain.addClass('scroll-menu').addClass('hidden');
baseLogo.addClass('hidden');
scrollLogo.removeClass('hidden');
}
// Bootstrap Menu Dropdowns:
$('ul.menu-bootstrap-menu').on('click', '.dropdown-menu', function(event) {
event.preventDefault();
event.stopPropagation();
$(this).parent().siblings().removeClass('open');
$(this).parent().toggleClass('open');
});
$('.dropdown').on('click', '.dropdown-toggle', function(e) {
e.stopPropagation();
var $this = $(this);
var $li = $this.closest('li.dropdown');
$li.siblings().removeClass('open');
$li.siblings().find('a').removeClass('dropdown-overlay').children('.caret-arrow').hide();
if ($li.hasClass('open'))
{
$li.removeClass('open');
$this.removeClass('dropdown-overlay').children('.caret-arrow').hide();
}
else
{
// Remove Sticky Nav search, if exists!
if ($('.search-scroll').length)
clonedMain.find('.menu-bootstrap-menu > li.search a').trigger('click');
$li.addClass('open');
$this.addClass('dropdown-overlay').children('.caret-arrow').show();
}
});
$(document).on('click', function(e) {
$('li.dropdown').removeClass('open');
$('li.dropdown a.dropdown-toggle').removeClass('dropdown-overlay').children('.caret-arrow').hide();
var eventtarget = e.target;
// If clicking anywhere outside of sticky nav search bar!
if ($('.search-scroll').length)
{
var navtargets = eventtarget.closest('li.menu-item.search'),
objsearch = $(eventtarget);
if (!navtargets && !objsearch.hasClass('search-input'))
clonedMain.find('.menu-bootstrap-menu > li.search a').trigger('click');
}
// If clicking anywhere outside of sub navs!
if ($('.nav-body').length)
{
var navbody = eventtarget.closest('.nav-body');
if (!navbody && $('.nav-body').is(':visible'))
$('.nav-body').slideToggle('fast');
}
});
Temelde, burada neler olduğunu, ana menü için, G/aktif görünür kalmaya ihtiyacım: Burada
Şu anda kullanarak js kodu . Ayrıca, sitenin birkaç sayfasında bir alt menü vardır ve bu da menünün dışında herhangi bir yere tıklanıncaya kadar açık kalmalıdır. Bütün bunlar iyi çalışıyor ve beklendiği gibi. Görüyorum tek sorun benul.menu-bootstrap-menu .dropdown-menu
ve
.dropdown .dropdown-toggle
dışındaki unsurların herhangi tıklayarak her süresinin arttırılmasıyla tutar olarak beni öldüresiye Erk başlıyor konsolda, kadar haşhaş hatadır. Bu kodun tamamı
document.ready
işlev çağrısı ile sarılmıştır.
bu neden oluyor nasıl/Herhangi bir fikir? Konsolu
: jQuery.min dosyasındaHata eğer yardımcı olur jQuery v1.11.3 Aşağıda
kullanıyorum
, hata hakkında görüntülerdir burada
downvoted? Niye ya? –
Hata hakkında daha fazla bilgi verebilir misiniz? Hata yığını gibi. Hangi jQuery sürümünü kullanıyorsunuz? Açıkçası kodunuzda yanlış bir şey görmüyorum ve durdurmaPropagasyon böyle bir hataya neden olmamalı ... Başka bir şey devam ediyor. –
@VictorLevin Hata ile ilgili olarak, hataların olabildiğince fazla görüntüsünü içeren soru düzeltildi. '.stopPropagation' –