我有一组复选框,当它们的状态为:checked
.
复选框的 ID 显然与其相应的文本输入不同,因此我尝试使用.replace
来编辑我设置的变量以定位其相应的输入。
复选框父 ID 的结构为icon-metro-NAME
,文本输入为“input-NAME”。
这是我的代码部分,然后是整个代码:
jQuery('input[type="checkbox"]').each(function () {
var checkbox = jQuery(this);
var checkboxParentID = jQuery(this).parent().attr('id');
var inputName = checkboxParentClass.replace(icon-metro, 'input');
尝试设置input[type="checkbox"]
asthis
然后找到它的父元素 ID 并将其设置为checkboxParentID
. 然后我取checkboxParentID
并替换icon-metro
为input
以定位相应的文本输入字段。
checkbox.change(function () {
if (jQuery(this).is(":checked")) {
jQuery(this).parent('.metro-icon').addClass('active');
jQuery(inputName).toggle('slow');
} else {
jQuery(this).parent('.metro-icon').removeClass('active');
jQuery(inputName).toggle('slow');
}
});
});
然后我检测:checked
复选框的状态,如果选中,我将一个active
类添加到它的父.metro-icon
元素。之后,我从我的变量中找到:checked
与文本输入相对应的元素inputName
并切换它的可见性。否则,如果未选中,我会active
从其父类中删除该类并切换/隐藏相应的文本输入。
完整代码:
jQuery('input[type="checkbox"]').each(function () {
var checkbox = jQuery(this);
var checkboxParentID = jQuery(this).parent().attr('id');
var inputName = checkboxParentClass.replace(icon-metro, 'input');
checkbox.change(function () {
if (jQuery(this).is(":checked")) {
jQuery(this).parent('.metro-icon').addClass('active');
jQuery(inputName).toggle('slow');
} else {
jQuery(this).parent('.metro-icon').removeClass('active');
jQuery(inputName).toggle('slow');
}
});
});
我意识到这可能是一团糟。我正在挑战自己以使用 jQuery 获得更高级的知识。