复选框检查事件监听器

Oli*_*ski 53 html javascript google-chrome google-chrome-extension dom-events

最近,我一直在努力与Chrome的插件API,我期待开发的一个插件,让生活我来说更容易管理网站.

现在我想要做的是在选中某个复选框时触发事件.由于此网站不属于我,因此我无法更改代码,因此我使用的是Chrome API.其中一个主要问题是,有一个名称而不是ID.我想知道一旦选中带有'name'的复选框,我是否可以触发该功能.

谢谢

tho*_*son 94

假设您正在使用此标记:

<input type="checkbox" name="checkbox">
Run Code Online (Sandbox Code Playgroud)

没有jQuery

使用类似jQuery的querySelector.

var checkbox = document.querySelector("input[name=checkbox]");

checkbox.addEventListener( 'change', function() {
    if(this.checked) {
        // Checkbox is checked..
    } else {
        // Checkbox is not checked..
    }
});
Run Code Online (Sandbox Code Playgroud)

用jQuery

$('input[name=checkbox]').change(function(){
    if($(this).is(':checked')) {
        // Checkbox is checked..
    } else {
        // Checkbox is not checked..
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 虽然这有效,但我在OP中看不到`jQuery`标签 (13认同)
  • `使用类似jQuery的querySelector` ... mmm,不是"jQuery-like"(感觉有点想要downvote) (3认同)
  • 我的意思是 jQuery 在 Javascript 中广泛使用了查询选择器。在它们出现之前,选择和查找元素是一件麻烦事。 (3认同)
  • 始终使用 `addEventListener` 而不是像 `onchange` 这样的直接事件以获得进一步的兼容性。 (3认同)
  • @dino onchange [所有浏览器都支持](https://developer.mozilla.org/en-US/docs/Web/Events/change#Browser_compatibility) 并且绝对 [on\[event\] 和addEventListener](/sf/answers/444401821/) 除了可能适合或不适合您的特定项目的用例。请告诉我我的答案应该以何种方式被否决。它不回答问题吗? (2认同)
  • @thordarson`onchange`不会添加事件监听器.它取代了现有的.这意味着您只使用一个事件来阻止该对象,这可能不适合使用同一对象的其他插件或脚本.如果我有一个"开始聊天"按钮,我希望它被其他主题,插件或脚本所吸引. (2认同)

JFK*_*JFK 43

由于我jQuery在OP中没有看到标记,因此这里只有一个javascript选项:

document.addEventListener("DOMContentLoaded", function (event) {
    var _selector = document.querySelector('input[name=myCheckbox]');
    _selector.addEventListener('change', function (event) {
        if (_selector.checked) {
            // do something if checked
        } else {
            // do something else otherwise
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

请参阅JSFIDDLE


小智 23

如果您的 html 中有一个复选框,例如:

<input id="conducted" type = "checkbox" name="party" value="0">

并且您想使用 javascript 在此复选框中添加一个 EventListener,在关联的 js 文件中,您可以执行以下操作:

checkbox = document.getElementById('conducted');

checkbox.addEventListener('change', e => {

    if(e.target.checked){
        //do something
    }

});
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案,值应该根据传入事件确定,而不是外部选择器:-) (2认同)