javascript - 在不使用 jquery 检查时在多组单选按钮的父元素上添加样式

标签 javascript html css

我在将 jquery 代码转换为 javascript 时遇到了问题。 有一组单选按钮,我需要在其父元素上添加样式,就像这样 example .

每组单选按钮的每一次选择都会将一个样式添加到其父级。我需要只使用 Javascript 来处理它。

这是 Demo : 效果应该与第一个链接类似。

<ul>
    <li class="check"><label for="one">1<input type="radio" id="one" name="test"/></label>     
    </li>
    <li class="check"><label for="two">2<input type="radio" id="two" name="test"/></label>
    </li>
</ul>
<ul>
    <li class="check"><label for="one">1<input type="radio" id="one" name="test2"/></label>
    </li>
    <li class="check"><label for="two">2<input type="radio" id="two" name="test2"/></label>
   </li>
</ul>
<ul>
    <li class="check"><label for="one">1<input type="radio" id="one" name="test3"/></label>
    </li>
    <li class="check"><label for="two">2<input type="radio" id="two" name="test3"/></label>
    </li>
</ul>

最佳答案

这段代码在没有 jQuery 的情况下提供了预期的功能:

function changeEvent(event) {
    //add highlight class
    this.parentNode.classList.add("highlight");
    try {
        //remove highlight class from previously selected radio in group
        //if already existing
        this.parentNode.parentNode.highlightDIV.classList.remove("highlight");
    } catch (ignore) {}
    //keep the highlighted div as a property of the parent div
    this.parentNode.parentNode.highlightDIV = this.parentNode;
}

//select all radio buttons
var radioList = document.querySelectorAll('input[type="radio"]');
//loop through list and add event listener
for (var i = 0; i < radioList.length; i++) {
    radioList[i].addEventListener("change", changeEvent, false);
}

它使用对 parentNode 的引用,但它们可以被算法替换,以在更动态的结构中动态查找所需的节点。 我希望您能找到方向,并且可以改进和修改代码以满足您的应用程序需求。

关于javascript - 在不使用 jquery 检查时在多组单选按钮的父元素上添加样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25198225/

相关文章:

javascript - 需要 JQuery 标记从数据库列表/数组中选中的复选框

javascript - 在单个 div 中滚动会导致重叠

javascript - 在 WEB 应用程序中隐藏已选定选项卡的超链接按钮

html - 多行文本的过渡下划线

css - 如何每 2 秒旋转一次文本/图像?

javascript - ReactJS:从表单获取输入

javascript - 在打开 fancybox 之前需要确认

javascript - Jquery 增加可放置捕捉阈值并在无法发生捕捉时重置其位置

android - Phonegap + Jquery Mobile运行时从点击图标到主index.html

javascript - Uncaught ReferenceError : Meteor is not defined