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;
});