此代码无效。 this+'>a'
不是有效的语法。
那么,我如何在this
的孩子中添加/删除课程?在这种情况下,a
元素。
jQuery(function ($) {
$("nav.menu>ul>li").hover(
function () {
$(this+'>a').addClass("hover_triangle");//error
},
function () {
$(this+'>a').removeClass("hover_triangle");//error
});
});
我无法nav.menu>ul>li>a
因为会选择菜单中的所有a
元素。
答案 0 :(得分:19)
$(this).children('a').addClass('hover_triangle');
并使用完整代码:
jQuery(function($) {
$('nav.menu>ul>li').hover(function() {
$(this).children('a').addClass('hover_triangle');
},function() {
$(this).children('a').removeClass('hover_triangle');
});
});
答案 1 :(得分:2)
$('a', this)
允许您仅查看this
对象
jQuery(function ($) {
$("nav.menu>ul>li").hover(
function () {
$('a', this).addClass("hover_triangle");//error
},
function () {
$('a', this).removeClass("hover_triangle");//error
});
});
答案 2 :(得分:1)
$(this).find('a').addClass('hover_triangle')
- 更常见的方式,因为没有必要成为直接的孩子
答案 3 :(得分:1)
您可以使用.find()
$(this).find('> a').addClass("hover_triangle");
这只会访问nav.menu>ul>li
如果您只想选择直接子项.find('a')
,则会获得嵌套锚点。为避免这种情况,您需要使用.find('> a')
或.children('a')
答案 4 :(得分:1)
有两种方法可以搜索this
的后代。大多数人回复了find()
(并且它更容易阅读),但jquery选择器也可以有第二个arfument context
。
$('a', this)
是另一种语法,与$(this).find('a)
相同。内部jQuery将采用第一种情况并使用find()
无论如何,但语法是有效的,许多人使用它
API参考: 的 jQuery( selector [, context] ) 强>