.attr('checked', 'checked') 不能按预期工作

use*_*271 2 jquery checked attr

我有这个代码,它不起作用。

    .on("click","span.name", function selectThisName(e) {
        if (e.altKey) {
            username = jQ(this).text();
            if (username != 'None') {
                jQ("span.name:contains('" + username + "')").closest('.namedesign').prev().prev().attr('checked', 'checked');
                e.preventDefault();
                updateCheckedCount();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

它曾经有效,但现在没有了。如果我按住相同的三个或四个垃圾邮件发送者名称,它应该更快地检查发布字段旁边的所有框。

但是,我也有这个代码,它神奇地工作。它专注于唯一的用户识别;与“基于文本”的用户名不同,元素本身包括标识。这是网站的代码:http : //puu.sh/9wxbw/03cb74487e.png

    .on("click","span.ident", function selectThisID(e) {
        if (e.altKey) {
            identification= "id_" + jQ(this).text();
                jQ("span." + identification).closest('.namedesign').prev().prev().attr('checked', 'checked');
                e.preventDefault();
                updateCheckedCount();
        }
    })
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想点击“heartbreaker”这个名字来检查他们所有的帐户帖子,但它不起作用。但是,如果我在 ID 上按 altclick,它会起作用。

为什么我需要这个?好吧,有时我必须选择名称而不是标识。ID 是基于 IP 的(并且它们总是在变化,否则人们无法发送垃圾邮件),而名称则不是,许多用户帐户已被劫持。

Eps*_*neR 6

而不是.attr('checked', 'cheked')使用.prop('checked', true)

$().prop() 文档。

示例:JS Bin

编辑:

您可以在checked没有 jQuery 的情况下设置属性:

$('input:checkbox').each(function(){
    //Get your input of type checkbox and set his property `checked` to boolean value:
    //Note: this is <input type='checkbox'>
    var isChecked = this.checked;
    this.checked = !isChecked;
    //Or using jQuery variable:
    $(this)[0].checked = true;
});
Run Code Online (Sandbox Code Playgroud)

  • @Barmar:您可以更改属性,如果元素未受影响,这也会更改属性。一旦元素离开此初始状态,更改属性就不再影响该属性。确切的行为可能因浏览器而异,但在 Firefox 中,您可以设置属性并删除属性,然后元素离开初始状态并且设置属性不再选中复选框:http://jsfiddle.net/ PVK76/1/ (3认同)