0

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

///////////reset default search entries/////////////
$("#sOrderByDLM").attr('checked', 'checked');
$("#sOrderByID").attr('checked', '');
$("#sOrderByPOIName").attr('checked', '');
$("#sOrderByAge").attr('checked', '');
$("#sOrderByOfficer").attr('checked', '');

$("#sOrderByDesc").attr('checked', 'checked');
$("#sOrderByAsc").attr('checked', '');

我在一个简单的 javaScript 函数中有这个,该函数在单击非提交类型(正常)按钮时调用。问题是当我单击它时,它不是填充sOrderByDLM单选按钮,而是填充sOrderByOfficer按钮,并且同样填充底部的两个 jQuery 语句(例如,sOrderByAsc变为 ' checked' 而不是sOrderByDesc) 我不是公然告诉 jQuery 重置 ' checked'属性到第二个参数的属性,它是空白的,除非我专门将它设置为 ' checked' 用于我打算默认的字段?

我在使用复选框时遇到了类似的问题,但我通过简单地以相反的顺序调用相同的语句找到了解决方法,但这似乎在这里不起作用。如果我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>
4

4 回答 4

3

尝试使用bools.prop()

$("#sOrderByDLM").prop('checked', true); // To check

$("#sOrderByID").prop('checked', false); // To Uncheck
于 2012-10-09T20:50:25.690 回答
1

要取消选中,请尝试:

$("#sOrderByAsc").removeAttr('checked', '');

checked并且selected是二进制属性,而不是真/假属性。

$("#sOrderByDLM").attr('checked', 'checked');是正确的。

也是这样:.attr('selected', 'selected');

于 2012-10-09T20:45:58.033 回答
1

如果你想使用'checked'和''然后使用removeAttr jquery函数而不是给属性分配''空白,checked但我不喜欢这个。因为分配 true 和 false 对我来说看起来更对称,然后分配检查和删除属性。

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

$("#sOrderByID").removeAttr('checked');

使用 true 或 false 代替'checked'and''

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

$("#sOrderByID").attr('checked', false);
于 2012-10-09T20:45:48.317 回答
-1

.attr()和之间有区别.prop()

啊啊啊

于 2012-10-09T20:50:17.840 回答