如何检查单选按钮是否具有'检查'属性原型
问题描述:
我有一些代码检查列表是否包含单选按钮输入的LI标签。我通过巧克力的JavaScript框架库有一些聪明的逻辑来解决单击LI时,它将应用相关的类来显示已选择的单选按钮。如何检查单选按钮是否具有'检查'属性原型
但是,我想扩展该逻辑,以便深入挖掘LI,并找到在页面加载并应用类时,哪个单选按钮输入是已选择的(在任何用户选择任何内容之前)它可以即时突出显示已经选择的内容。
我对Prototype有点新,所以我不确定什么是最好的方法来做到这一点,所以将不胜感激您可以提供任何帮助。
所以在下面的情况下,我想挑出按钮3.
的jsfiddle链接:http://jsfiddle.net/Qw6KA/
HTML:
<ul class="radioList">
<li>
<input type="radio" id="radio1" name="radioButton" value="Button 1">
<label for="radio1">Button 1</label>
</li>
<li>
<input type="radio" id="radio2" name="radioButton" value="Button 2">
<label for="radio2">Button 2</label>
</li>
<li>
<input type="radio" id="radio3" name="radioButton" value="Button 3" checked="checked">
<label for="radio3">Button 3</label>
</li>
<li>
<input type="radio" id="radio4" name="radioButton" value="Button 4">
<label for="radio4">Button 4</label>
</li>
</ul>
JS(原型):
$.RadioButtons = function(viewSelector, callback) {
var items = viewSelector + ".radioList li";
var radioButtons = $$(items);
radioButtons.forEach(function(item) {
item.bind("click", function() {
radioButtons.forEach(function(check) {
check.removeClass("selected");
});
this.addClass("selected");
this.last().checked = true;
if (callback) {
callback(item);
}
});
});
};
谢谢 -JaXL
答
$.RadioButtons = function(viewSelector, callback) {
var items = viewSelector + ".radioList li";
var radioButtons = $$(items);
radioButtons.forEach(function(item) {
item.bind("click", function() {
radioButtons.forEach(function(check) {
check.removeClass("selected");
});
this.addClass("selected");
this.last().checked = true;
if (callback) {
callback(item);
}
});
// Add this bit
if (item.select('input[checked]').length) {
item.addClassName('selected');
}
});
};
谢谢clockworkgeek。这正是我正在寻找的,但是当我使用该代码时,它不起作用。任何想法为什么? – JaXL
确保您使用带有控制台的浏览器(所有现代应用都在使用),并在代码中放入一些'console.log(item)'类型的调用。也可以从控制台输入'$$('。radioList li input [checked]')',你应该看到一个检查过的控件列表,如果不存在类名或类似的问题。 – clockworkgeek