javascript - Jquery 变量问题

标签 javascript jquery

我有以下示例:http://jsfiddle.net/gespinha/yTjUL/13/

该变量应在点击时触发,使链接的类从on更改为off,并将颜色从红色更改为绿色。但相反,它一开始就已经是绿色的了,因此该函数毫无用处。

为什么不起作用?

HTML

<a id="link" href="javascript:void(0)" class="on">CLICK HERE</a>

JQUERY

$(document).ready(function () {

    var $myVar = $(document).find('.on').addClass('off').removeClass('on');
    $('link').click(function () {
        $myVar
    });

});

最佳答案

您似乎有这样的印象:变量将存储一系列操作,以便稍后在“调用”变量时执行,但这不是(显然)发生的情况:第一行​​,在 ready 中() 处理程序在 var 赋值中查找 .on 元素并执行您指定的操作,存储 .on变量中的元素(因为 jQuery 方法几乎都返回 this 对象)。

相反:

$(document).ready(function () {
    // use the `#link` notation, since 'link' is the id of the element:
    $('#link').click(function () {
        // assign a function to the click-event handler:
        $('.on').addClass('off').removeClass('on');
    });
});

或者,更简单(如果您想在“状态”之间切换)使用 toggleClass()$(this) (而不是从整个每次用户单击给定元素时记录):

$(document).ready(function () {
    $('#link').click(function () {
        $(this).toggleClass('on off');
    });
});

此外,不要在 href 中使用 javascript:void(0),只需使用 jQuery 来阻止默认操作:

$(document).ready(function () {
    $('#link').click(function (e) {
        e.preventDefault();
        $(this).toggleClass('on off');
    });
});

JS Fiddle demo .

引用文献:

关于javascript - Jquery 变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19736682/

相关文章:

在 iOS 上调用 "TypeError: cancelled"时出现 Javascript "fetch"错误

javascript - 将 PHP 变量传递到 Flot 图表中

javascript - 从 IOS 发送事件到 JS

javascript - 使用闭包强制同步 javascript

jquery - 在 MVC3、Razor 中使用数据注释时,使用 [Compare ("",..)] 比较新密码并确认新密码不起作用

javascript - Passport.js Facebook 身份验证下一步不起作用

javascript - Laravel:没有通过ajax发送数据

javascript - 从 Web 服务返回对象到 Ajax 请求成功回调函数

javascript - jQuery 将事件处理程序连接到被触发的对象的方法

javascript - iframe 的 div 中的元素在当前代码中无法访问