首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >If/else不使用jQuery中的单击事件

If/else不使用jQuery中的单击事件
EN

Stack Overflow用户
提问于 2013-06-28 23:16:43
回答 6查看 8.2K关注 0票数 1

我是jQuery的初学者,想找点乐子。我正在尝试制作一个按钮,当点击时,它将改变页面的背景,以及改变按钮的文本。我只需要两个场景:-如果按钮显示为"1",则将按钮更改为"2",将背景更改为黑色;-如果按钮显示为"2“,则将按钮更改为"1”,将背景更改为白色;

我的代码适用于第一次单击,但您不能多次单击。

我做错什么了?耽误您时间,实在对不起。

http://jsfiddle.net/6fRbM/7/

这是我的HTML

代码语言:javascript
运行
复制
<body>
<button id="lumiere">1</button>
</body>

这是我的脚本

代码语言:javascript
运行
复制
$(function() {
    $('#lumiere').bind('click', function(event) {
        if ($('#lumiere:contains("1")')) {
            $('body').css('background-color', "black")
            $('#lumiere').html('2')
        }
        else if ($('#lumiere:contains("2")')) {
            $('body').css('background-color', "white")
            $('#lumiere').html('1')
        }
    }
    );
}
);
EN

Stack Overflow用户

发布于 2013-06-28 23:22:32

稍微重构一下你的代码:

代码语言:javascript
运行
复制
$(function() {
    $('#lumiere').click(function(event) {
        var $this = $(this);
        if ($this.text() === '1') {
            $('body').css('background-color', "black");
            $this.text('2');
        }
        else if ($this.text() === '2') {
            $('body').css('background-color', "white");
            $this.text('1');
        }
    });
});

优化包括:

  • bind()是旧的,使用包含过滤器而不是
  • 使用click()快捷方式
  • 不需要在你的回调中重复选择,只需使用this
  • The Id选择器是最快的,不要错过这个机会使用:on()
  • 你根本不需要过滤器,因为它做的并不是你想的那样。它测试您传递的参数是否为文本中包含的,而不是等于。因此,如果您需要后者,请改用text()
票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17368110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档