Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery$(此)选择器在函数中不起作用_Javascript_Jquery_Jquery Selectors_This - Fatal编程技术网

Javascript jQuery$(此)选择器在函数中不起作用

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

我正在尝试创建一个函数,该函数将通过过程中添加的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-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');
});