jQuery $(this) 选择器在函数中不起作用
jQuery $(this) selector is not working within a function
我正在尝试制作一个函数,该函数将通过程序添加的 div.hb-menu-subMenuToggle 元素的 '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');
};
这是 link
Codepen Project
如有任何帮助,我们将不胜感激!
function hbMenuSubToggle(divyouneed){
// 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
divyouneed.siblings('ul').toggleClass('hb-menu-sub-open');
};
并使用它
hbMenuSubToggle($(this))
对于 $(this) 你必须先 selected 一个元素。在一个函数中你没有那样的..所以它只有在你 select 直接而不是 $(this)
时才有效
function hbMenuSubToggle() {
$('.blablabla').blablabla();
}
并阅读 this 以了解有关 jQuery 基础知识的更多信息
执行此操作的正确方法是使用 jQuery 事件处理程序,而不是使用 onClick
和 HTML 中的内联函数。
例如,如果您将它放在 $(document).ready()
中,它会将点击事件处理程序附加到顶部菜单中的所有 A
元素。当它被点击时你将能够得到$(this)
(也就是A
元素)然后遍历到它的父元素(UL
元素)然后找到子UL
元素(子菜单)切换 class.
$('#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 上的运行情况:http://codepen.io/anon/pen/rOKQOJ
我正在尝试制作一个函数,该函数将通过程序添加的 div.hb-menu-subMenuToggle 元素的 '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');
};
这是 link Codepen Project
如有任何帮助,我们将不胜感激!
function hbMenuSubToggle(divyouneed){
// 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
divyouneed.siblings('ul').toggleClass('hb-menu-sub-open');
};
并使用它
hbMenuSubToggle($(this))
对于 $(this) 你必须先 selected 一个元素。在一个函数中你没有那样的..所以它只有在你 select 直接而不是 $(this)
时才有效function hbMenuSubToggle() {
$('.blablabla').blablabla();
}
并阅读 this 以了解有关 jQuery 基础知识的更多信息
执行此操作的正确方法是使用 jQuery 事件处理程序,而不是使用 onClick
和 HTML 中的内联函数。
例如,如果您将它放在 $(document).ready()
中,它会将点击事件处理程序附加到顶部菜单中的所有 A
元素。当它被点击时你将能够得到$(this)
(也就是A
元素)然后遍历到它的父元素(UL
元素)然后找到子UL
元素(子菜单)切换 class.
$('#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 上的运行情况:http://codepen.io/anon/pen/rOKQOJ