我能找到的大多数展示如何使用属性的示例都展示了如何设置它们,而不是如何检索它们。就我而言,我试图获取 an 的类,然后解析它以确定其父值。
HTML:
<select class='parent' name='parent' size='10'>
<option value='1'>Category 1 -></option>
<option value='2'>Category 2 -></option>
</select>
<select class='child' id='child' size='10'>
<option class='sub_1' value='5'>Custom Subcategory 1.1</option>
<option class='sub_1' value='3'>Subcategory 1.1</option>
<option class='sub_2' value='4'>Subcategory 2.1</option>
</select>
对于子列表中的任何给定选项,我需要查看类属性,解析名称以查找数字(“sub_[n]”),然后获取父列表中选项的值。
到目前为止我的代码(在我的测试用例中 childVal 的值为“5”):
var class = child.find("option[value=" + childVal + "]").attr("class");
上面的类变量返回“未定义”。我知道 .find 正在工作,因为我可以将它用于其他用途。问题在于获取类名。
一旦获得类名,我就可以去掉“sub_”来获取 ID 号。
有更好的方法吗?为什么 .attr(“class”) 返回未定义?
这是一个 fiddle 链接 http://jsfiddle.net/n6dZp/8/一个损坏的例子。
谢谢,
瑞克
这是我正在开发的完整功能。这是一个级联选择列表。
<script type="text/javascript">
function cascadeSelect(parent, child, childVal) {
var childOptions = child.find('option:not(.static)');
child.data('options', childOptions);
parent.change(function () {
childOptions.remove();
child
.append(child.data('options').filter('.sub_' + this.value))
.change();
})
childOptions.not('.static, .sub_' + parent.val()).remove();
if (childVal != '') {
var className = child.find("option[value=" + childVal + "]").attr("class");
** need code here to select the parent and the child options based
on childVal **
}
}
$(function () {
$('.categoryform').find('.child').change(function () {
if ($(this).val() != null) {
$('.categoryform').find('#CategoryId').val($(this).val());
}
});
});
$(function () {
cascadeForm = $('.categoryform');
parentSelect = cascadeForm.find('.parent');
childSelect = cascadeForm.find('.child');
cascadeSelect(parentSelect, childSelect, "5");
});
</script>
最佳答案
class
是 Javascript 中的保留字,因此不能使用该名称的变量。尝试一下
var className = child.find("option[value=" + childVal + "]").attr("class");
关于javascript - 使用 jQuery 确定元素的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3894214/