Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery .attr(';选中';,';选中';)不';I don’我没有按计划工作_Jquery_Attr_Checked - Fatal编程技术网

Jquery .attr(';选中';,';选中';)不';I don’我没有按计划工作

Jquery .attr(';选中';,';选中';)不';I don’我没有按计划工作,jquery,attr,checked,Jquery,Attr,Checked,我有这个代码,它不工作 .on("click","span.name", function selectThisName(e) { if (e.altKey) { username = jQ(this).text(); if (username != 'None') { jQ("span.name:contains('" + username + "')").closest('.namedes

我有这个代码,它不工作

    .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();
            }
        }
    }
它过去能用,但现在不行了。如果我点击相同的三个或四个垃圾邮件发送者的名字,应该可以更快地选中“发布”字段旁边的所有框

然而,我也有这个代码,它神奇地工作。它侧重于独特的用户标识;元素本身包含标识,而用户名是“基于文本的”。这是网站的代码:

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

为什么我需要这个? 嗯,有时候我不得不选择名字而不是身份证。ID是基于IP的(它们总是变化的,否则人们就不能发送垃圾邮件),而名称不是,很多用户帐户被劫持。

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

例如:

编辑:

您可以在不使用jQuery的情况下设置
checked
属性:

$('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;
});
$('input:checkbox')。每个(函数(){
//获取checkbox类型的输入,并将其属性“checked”设置为布尔值:
//注:这是
var isChecked=此项已检查;
this.checked=!isChecked;
//或者使用jQuery变量:
$(此)[0]。选中=真;
});

它们都应该工作。在这种情况下,jQuery会自动将
attr
转换为
prop
。他说它过去是有效的,他说第二块代码也使用
.attr
,现在仍然有效。为什么它只会在第一个块中失败?@Barmar:当您调用
attr
时,您是否有使用
prop
的jQuery文档?它们用于不同的事物,因此任意用一个替换另一个将是非常不可预测的。@Barmar:您可以更改属性,如果元素未被触及,这也将更改属性。元素离开此初始状态后,更改属性将不再影响属性。确切的行为可能因浏览器而异,但在Firefox中,您可以设置属性并删除属性,然后元素离开初始状态,设置属性不再选中复选框:
prop
attr
和period决不相同。您应该忘记
attr('checked')
attr('disabled')
,而总是使用
prop
。您可以制作一个JSFIDLE来演示这个问题吗?您可以发布更多的脚本代码吗?在第一个事件处理程序的末尾缺少一个右括号,但这可能是由于复制过去。我试着在中重现你的情况-两个处理程序都很好
$('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;
});