Javascript jQuery$(此)选择器在函数中不起作用
我正在尝试创建一个函数,该函数将通过过程中添加的div.hb-menu-submenutogle元素的“onclick”事件触发。当将初始选择器用作“$this”以外的任何对象时,该函数将起作用Javascript jQuery$(此)选择器在函数中不起作用,javascript,jquery,jquery-selectors,this,Javascript,Jquery,Jquery Selectors,This,我正在尝试创建一个函数,该函数将通过过程中添加的div.hb-menu-submenutogle元素的“onclick”事件触发。当将初始选择器用作“$this”以外的任何对象时,该函数将起作用 // FUNCTION: hbMenuSubToggle() // Toggles CSS classes for animation of .hb-menu-sub-open. Fires when clicking the div element with .hb-menu-subMenuToggl
// FUNCTION: hbMenuSubToggle()
// Toggles CSS classes for animation of .hb-menu-sub-open. Fires when clicking the div element with .hb-menu-subMenuToggle class
function hbMenuSubToggle(){
// TESTING: This works as far as opening the submenus; however, it does not open only the submenu that is a direct sibling of the hb-menu-subMenuToggle element.
$('a.withSubmenu').siblings('ul').toggleClass('hb-menu-sub-open');
// DESIRED EFFECT: Does not work
$(this).siblings('ul').toggleClass('hb-menu-sub-open');
};
这里有一个链接到
任何帮助都将不胜感激
并使用它
hbMenuSubToggle($(this))
对于$this,您必须在之前选择一个元素。在函数中,你没有这样的函数。。因此,只有当您直接选择它而不是使用$this时,它才会起作用
function hbMenuSubToggle() {
$('.blablabla').blablabla();
}
阅读了解有关jQuerys基础知识的更多信息,正确的方法是使用jQuery事件处理程序,而不是在HTML中使用onClick和内联函数 例如,如果将其放在$document.ready中,它将向顶部菜单中的所有a元素附加一个click事件处理程序。单击它时,您将能够获得$this,它是A元素,然后遍历到其父元素UL元素,然后在子菜单中找到子UL元素以切换该类
$('#main-nav>ul>li').on('click', '>a', function(){
$(this).parent().find('ul').toggleClass('hb-menu-sub-open');
});
同样,显示主菜单的函数也可以编写如下
$(document).on('click', '.hb-menu-btn', function(){
$('.hb-menu-btn, .hb-menu, .hb-menu-page').toggleClass('hb-menu-open');
});
在这里查看它在CodePen上的工作:使用变量更改$this并将该变量用作函数的参数。去掉onclick并使用jQuery事件处理程序。用突兀的文字和不突兀的文字相结合是没有意义的。onclick仅在您传入时提供元素访问,因为argumentAnswer没有任何意义我的英语很差^^^如果您理解我的意思,它会有意义…尝试使用翻译服务。
$(document).on('click', '.hb-menu-btn', function(){
$('.hb-menu-btn, .hb-menu, .hb-menu-page').toggleClass('hb-menu-open');
});