Javascript 向上遍历DOM以选择单选按钮输入中包装的标签(Drupal公开的过滤器)
我在Drupal中使用了一个暴露的filter单选按钮,我注意到html结构使得在选中标签时很难选择要更改的标签 如果先输入html结构,然后是标签,那么选择带有“input[type=radio]:checked+label”的标签是没有问题的,但是标签环绕着输入Javascript 向上遍历DOM以选择单选按钮输入中包装的标签(Drupal公开的过滤器),javascript,jquery,html,css,Javascript,Jquery,Html,Css,我在Drupal中使用了一个暴露的filter单选按钮,我注意到html结构使得在选中标签时很难选择要更改的标签 如果先输入html结构,然后是标签,那么选择带有“input[type=radio]:checked+label”的标签是没有问题的,但是标签环绕着输入 if(jQuery(“输入[type=radio]:选中”)){ jQuery(“输入[type=radio]:选中。控件标签”).css(“字体重量”,“粗体”); } 全选 选择1 选择2 如果您希望在选择时将最接近所选收音
if(jQuery(“输入[type=radio]:选中”)){
jQuery(“输入[type=radio]:选中。控件标签”).css(“字体重量”,“粗体”);
}
全选
选择1
选择2
如果您希望在选择时将最接近所选收音机的标签设为粗体,则需要向输入本身添加事件处理程序。然后,在添加类之前,可以使用closest()
获取标签。还要注意,您还需要从其他标签中删除该类。试试这个:
$('.bef选择为收音机')。更改(函数(){
$('label').removeClass('active');
$(this).closest('label').addClass('active');
}).filter(':checked').change()代码>
label.active{
字体大小:粗体;
}
全选
选择1
选择2
这里是另一种方法。我在这方面得到了一些帮助
jQuery("input[name=tid]").on("change", function(e){
jQuery("#edit-tid").find("label").css("font-weight", "normal");
jQuery(this).closest("label").css("font-weight", "bold")
});
工作起来很有魅力 您的逻辑有缺陷,因为if
语句将jQuery对象强制为布尔值,这将始终导致true
。你在什么情况下运行这段代码?@Rorymcrossan,老实说,我不知道。它是drupal中一个更好的暴露过滤器单选按钮。我不认为单选按钮有任何活动。好吧,那么更好的问题是,你想实现什么?我假设您希望将所选单选按钮旁边的标签加粗,是吗?是的,加粗标签取决于是否选中。drupal将标签包装在输入上的方式让我认为结构是错误的。不,标签结构没有任何问题。我在下面为您添加了一个答案。id是因为我从控制台代码复制粘贴的。他们在网站上有不同的id。我会在网站上试一试。我想我有太多其他的事情要做,这是不可行的。所以我会继续尝试,但我明白了要点。