Javascript 使用jQuery修改html属性会产生意外结果

Javascript 使用jQuery修改html属性会产生意外结果,javascript,jquery,html,Javascript,Jquery,Html,我在jQuery中遇到了一些不寻常的结果,希望有人能告诉我为什么。我确信jQuery强大到足以做到这一点,所以我想知道我做错了什么。以下是我所拥有的(一些看似简单易懂的代码): 我在一个简单的javaScript函数中使用了这个函数,单击一个非提交类型(普通)按钮就可以调用它。问题是,当我单击此按钮时,它不是填充sOrderByDLM单选按钮,而是填充sOrderByOfficer按钮,同样地,它填充底部的两个jQuery语句(例如,sOrderByAsc变成“选中的”,而不是sOrderByD

我在jQuery中遇到了一些不寻常的结果,希望有人能告诉我为什么。我确信jQuery强大到足以做到这一点,所以我想知道我做错了什么。以下是我所拥有的(一些看似简单易懂的代码):

我在一个简单的javaScript函数中使用了这个函数,单击一个非提交类型(普通)按钮就可以调用它。问题是,当我单击此按钮时,它不是填充
sOrderByDLM
单选按钮,而是填充
sOrderByOfficer
按钮,同样地,它填充底部的两个jQuery语句(例如,
sOrderByAsc
变成“
选中的
”,而不是
sOrderByDesc
)我不是在明目张胆地告诉jQuery将“
checked
”属性重置为第二个参数的属性,该属性为空,除非我专门为我想要默认的字段将其设置为“
checked

我在复选框方面也遇到过类似的问题,但我发现了一个解决办法,就是简单地按相反的顺序调用相同的语句,但这在这里似乎不起作用。如果我在razor中设置“
checked=”checked“
”,一切正常,但我需要这个按钮在客户端工作

无论如何,如果HTML是必要的,我会提供它,但我怀疑它是必要的,因为我已经三次检查ID以确保

谢谢你的帮助

(上帝保佑,没有你我真不知道该怎么办!:D)

更新:

                    <tr>
                        <td class="orderlineupColor"><label for="sOrderByDLM">Date Last Modified</label><br/><input type="radio" id="sOrderByDLM" name="sOrderBy" style="margin-left: 115px;" value="OrderByDLM" @OrderByFiller[0] /></td>
                        <td class="orderlineupColor"><label for="sOrderByID">Entry ID</label><br/><input type="radio" id="sOrderByID" name="sOrderBy" style="margin-left: 115px;" value="OrderByID" @OrderByFiller[1] /></td>
                        <td class="orderlineupColor"><label for="sOrderByPOIName">POI Name</label><br/><input type="radio" id="sOrderByPOIName" name="sOrderBy" style="margin-left: 115px;" value="OrderByPOIName" @OrderByFiller[2] /></td>
                        <td class="orderlineupColor"><label for="sOrderByAge">Age</label><br/><input type="radio" id="sOrderByAge" name="sOrderBy" style="margin-left: 115px;" value="OrderByAge" @OrderByFiller[3] /></td>
                        <td class="orderlineupColor"><label for="sOrderByOfficer">Officer</label><br/><input type="radio" id="sOrderByOfficer" name="sOrderBy" style="margin-left: 115px;" value="OrderByOfficer" @OrderByFiller[4] /></td>
                    </tr>
                    <tr>
                        <td class="orderlineupColor2">In Descending Or<br/>Ascending Order:</td>
                        <td class="orderlineupColor2"><label for="sOrderByDesc">Descending Order</label><br/><input type="radio" id="sOrderByDesc" name="sAscOrDesc" style="margin-left: 115px;" value="OrderByDesc" @OrderByAscOrDescFiller[0] /></td>
                        <td class="orderlineupColor2"><label for="sOrderByAsc">Ascending Order</label><br/><input type="radio" id="sOrderByAsc" name="sAscOrDesc" style="margin-left: 115px;" value="OrderByAsc" @OrderByAscOrDescFiller[1] /></td>
                        <td class="orderlineupColor2"><button type="button" class="smallbtn" onclick="clearSortEntries()">Reset Sort Entries</button></td>
                        <td class="orderlineupColor2"></td>
                    </tr>

上次修改日期
条目ID
POI名称
年龄
官员
按降序或升序排列: 降序排列
升序
重置排序条目
如果要使用“checked”和“”,请使用removeAttr jquery函数,而不是将
'
空白指定给
checked
属性,但我不喜欢此属性。在我看来,指定true和false比指定checked和移除属性更加对称

$("#sOrderByDLM").attr('checked', 'checked');

$("#sOrderByID").removeAttr('checked');
使用true或false代替
'checked'
'


如果要使用“checked”和“”,请使用removeAttr jquery函数,而不是将
'
blank赋值给
checked
属性,但我不喜欢这个。在我看来,指定true和false比指定checked和移除属性更加对称

$("#sOrderByDLM").attr('checked', 'checked');

$("#sOrderByID").removeAttr('checked');
使用true或false代替
'checked'
'

要取消选中,请尝试:

$("#sOrderByAsc").removeAttr('checked', '');
选中的
和选中的
是二进制属性,不是真/假属性

$(“#sOrderByDLM”).attr('checked','checked')是正确的

所以:
.attr('selected','selected')

要取消选中,请尝试:

$("#sOrderByAsc").removeAttr('checked', '');
选中的
和选中的
是二进制属性,不是真/假属性

$(“#sOrderByDLM”).attr('checked','checked')是正确的


所以:
.attr('selected','selected')

.attr()
.prop()


.attr()
.prop()


尝试使用
bools
.prop()


尝试使用
bools
.prop()


这只是另一种方法,可以完成整个页面的相同操作,从而产生相同的意外结果。不,checked是一个布尔属性。问题是,选中的属性映射到
defaultChecked
属性(当用户选中或取消选中复选框时,该属性不会更改)。这只是另一种执行此页面上相同操作的方法,从而产生相同的意外结果。否,选中是一个布尔属性。问题在于,checked属性映射到
defaultChecked
属性(当用户选中或取消选中复选框时,该属性不会更改)。对于应该阅读javascript教程的人来说,你是对的,事实并非如此。对于一个至少了解基本知识的人来说,答案就在眼前。我不得不同意@VoidKing的观点,并说这不是一个答案;该表根本不处理设置值,它只是说明在使用各种函数获取值时返回的内容。是的,对文档相当精通的人可能会推断出您想要了解的内容,但这一点也没有用。对于应该阅读javascript教程的人来说,您是对的,事实并非如此。对于一个至少了解基本知识的人来说,答案就在眼前。我不得不同意@VoidKing的观点,并说这不是一个答案;该表根本不处理设置值,它只是说明在使用各种函数获取值时返回的内容。是的,对文档相当熟悉的人可能会推断出您想要了解的内容,但这一点都没有用。id在页面上是唯一的吗?您的答案是“完成了”,工作了,我有一个按钮可以单独清除这组字段,另一个按钮可以清除整个表单,我在为后者修改代码时点击了前者,我很抱歉。我已经接受并投票支持你的答案,谢谢!id在页面上是唯一的吗..?你的答案是“完成了,工作了”,我有一个按钮可以单独清除该组字段,还有一个按钮可以清除整个表单,我在修改后者的代码时单击了前者,我很抱歉。我已经接受并投票支持你的a
$("#sOrderByDLM").prop('checked', true); // To check

$("#sOrderByID").prop('checked', false); // To Uncheck