Answers:
应该这样做:
$("label[for=comedyclubs]")
如果您的ID中包含非字母数字字符,则必须在attr值两边加上引号:
$("label[for='comedy-clubs']")
感谢Kip,对于那些希望在$$(this)迭代或关联到函数中的同时实现$(this)的用户:
$("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );
我在工作该项目时花了一段时间,但找不到一个很好的例子,所以我希望这对其他希望解决同一问题的人有所帮助。
在上面的示例中,我的目标是隐藏无线电输入并设置标签样式以提供流畅的用户体验(更改流程图的方向)。
你可以在这里看到一个例子
如果您喜欢该示例,则为css:
.orientation { position: absolute; top: -9999px; left: -9999px;}
.orienlabel{background:#1a97d4 url('http://www.ifreight.solutions/process.html/images/icons/flowChart.png') no-repeat 2px 5px; background-size: 40px auto;color:#fff; width:50px;height:50px;display:inline-block; border-radius:50%;color:transparent;cursor:pointer;}
.orR{ background-position: 9px -57px;}
.orT{ background-position: 2px -120px;}
.orB{ background-position: 6px -177px;}
.orienSel {background-color:#323232;}
以及JavaScript的相关部分:
function changeHandler() {
$(".orienSel").removeClass( "orienSel" );
if(this.checked) {
$("label[for="+$(this).attr("id")+"]").addClass( "orienSel" );
}
};
给定原始标签的替代问题根源,在输入后加上标签,您可以使用纯CSS解决方案,而避免完全使用JavaScript ...:
input[type=checkbox]:checked+label {}
$('#comedyclubs')[0].labels
访问分配给的所有标签#comedyclubs
。