使单选按钮文本可点击而不添加任何HTML
Making radio button text clickable without adding any HTML
我知道如果你有单选按钮,你想让文本可点击,你可以把按钮包装在标签HTML标签中,就像这里描述的那样。如何使单选按钮文本也可点击呢?
但这可以不添加任何额外的HTML(通过Javascript或jQuery仅)吗?
在我的特殊情况下,我所做的是一组单选按钮在一个div中,每个单选按钮和它的文本都有一个span(但它们都有相同的名称)。下面是一个例子……
Which team will win the world series in 2015?
<div id="teams"><span class="team"><input type="radio" name="team" value="11"> Cardinals</span>
<span class="team"><input type="radio" name="team" value="12"> Royals</span>
<span class="team"><input type="radio" name="team" value="13"> Dodgers</span>
</div>
无需额外的HTML,使用jQuery (fiddle):
$('span.team').css('cursor', 'default').click(function(e) {
var cur = $(this).find('input[type="radio"]').prop('checked')
$(this).find('input[type="radio"]').prop('checked', !cur); //true turns false and vice versa
});
$('input[type="radio"]').click(function(e) {
e.stopPropagation(); //otherwise the actual radio buttons won't work properly
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Which team will win the world series in 2015?
<div id="teams">
<span class="team"><input type="radio" name="team" value="11"> Cardinals</span>
<span class="team"><input type="radio" name="team" value="12"> Royals</span>
<span class="team"><input type="radio" name="team" value="13"> Dodgers</span>
</div>
这将改变光标以匹配label
元素的样式,并且在另一次单击时取消选择当前选中的单选按钮。
但是,您可以将span
更改为label
-它们将以完全相同的方式工作
一种可能性是通过代码将span
元素替换为label
元素。
但是,只有在JavaScript代码的其他地方没有使用span
元素时才这样做。
$('span.team').each(function() {
$('<label>').addClass('team').html($(this).html()).insertAfter($(this);
$(this).remove();
});
如果你不能写新的html,你可以用jquery:
// make click in anywhere of the span
$('span.team').on('click', function() {
var radio = $(this).find('input[type=radio]'); // the input
if(radio.prop('checked')) {
radio.prop('checked', false); // checking false
} else {
radio.prop('checked', true); //checking true
}
});
点击时可以强制选择:
$(function() {
$('span.team').on('click', function(e) {
$(this).children('input[name=team]').prop('checked', true); // mark this
});
});
span.team {
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Which team will win the world series in 2015?
<div id="teams"><span class="team"><input type="radio" name="team" value="11"> Cardinals</span>
<span class="team"><input type="radio" name="team" value="12"> Royals</span>
<span class="team"><input type="radio" name="team" value="13"> Dodgers</span>
</div>
相关文章:
- 如何创建php函数或任何脚本/jquery Javascript,使我能够获取与复选框关联的值并添加它们
- 尝试添加一个选项以使用append进行选择,但没有任何结果
- 如果没有从下拉列表中选择任何值,则允许使用php、mysql、javascript将文本框添加到mysql表中
- ul添加任何地方都没有使用的附加类
- ReactCSSTransitionGroup没有添加任何类
- 有没有任何方法可以使用joomla为图像添加描述!模态挤压盒
- angular2:使用*ngIf构建svg图标不会给DOM添加任何内容
- 是否可以提供一个特定的URL,供任何在网络应用程序中为页面添加书签的人使用
- 有没有任何方法可以用javascript将optgroup标签添加到依赖的dropdownlist
- 当任何块级元素的视口较窄时,添加水平滚动条
- 添加的接口中的任何方法都没有使用 @android.webkit.JavascriptInterface 进行注释;它们
- 将页面控件添加到数据表,但当代码运行时,页面中不显示任何内容
- ExtJS4:如何将按钮添加到任何自定义表单
- 下面的函数没有向文本区域添加任何内容
- FullCalendar没有'不要添加任何事件(周视图、议程视图)
- 在添加任何新事件侦听器之前删除匿名事件侦听器
- 使用GET方法选择表单——是否有可能有一个不向URL添加任何内容的选项?
- 使单选按钮文本可点击而不添加任何HTML
- 选择添加任何自定义值的框
- 我可以在highcharts中添加任何指标到任何图表类型