3

我正在尝试向 parent 添加一个类<li>,这是我一直在尝试但没有结果的方法:

function calendaractive(){
    $(this).parent('li').addClass("active");
}

HTML

<li>
    <a href="javascript:void(0)" onclick="calendaractive();">2009</a>
</li>

为什么这不起作用?

4

4 回答 4

7

尝试。
通过this你的函数绑定

<li>
    <a href="javascript:void(0)" onclick="calendaractive(this);">2009</a>
</li>  

相应地更改JS

function calendaractive(anchorLink){
    $(anchorLink).parent().addClass("active");
}
于 2013-02-06T10:17:43.517 回答
3

最好不要混合 HTML 和 JavaScript。最好检查 JavaScript 本身中的点击:-

$(document).ready(function(){    
    $('li > a').on('click', function(e) {           
        $(this).parent().addClass('active');            
    });    
});

将 JavaScript 与 HTML 分开将使其更易于维护(与 CSS 相同的论点)。

于 2013-02-06T10:19:37.277 回答
1

您应该使用 JQuery 而不是 onClick 方法添加事件:

JS 应该是这样的:

$(document).ready(function(){ 
    $("a").click(function() {
        $(this).parent('li').addClass("active");
    });
});

像这样的 HTML

<li>
    <a href="#">2009</a>
</li>

请注意,这将添加到所有锚链接,如果您只想将点击事件添加到某些锚链接,请使用类

于 2013-02-06T10:21:26.823 回答
0

javascript中的this关键字在不同的地方意味着不同的东西。有时是窗口,有时是使用它的功能,有时是不同的东西。这取决于调用函数的方法。这里有更多信息(更准确):“this”关键字如何工作?

因此,当您编写$(this)jQuery 时,您的意思是应该将此类添加到 this 对象中,无论它是什么。

如果你通过 id 将选择器作为 jQuery 的参数,或者更好地传递一个参数,你的代码应该可以工作。

于 2013-02-06T10:31:52.713 回答