数据是否等于保留或无法被 jQuery/Sizzle 选择
Is data-equalTo reserved or unable to be selected by jQuery/Sizzle?
我试图连接jQuery Validator插件以使用数据属性而不是直接属性(例如:data-minlength而不是minlength,data-equalTo而不是equalTo),以便我的标记将验证为有效的HTML5。一切都很好,直到我达到数据平等。 我最终不得不使用数据等于,并在我的代码中放置了一个特殊条件:
$("#form").validate();
['minlength', 'maxlength', 'range', 'min', 'max', 'equals' /* 'equalTo' no worky! */].forEach(function (item) {
$('input[data-' + item + ']').each(function () {
if ($(this).data(item)) {
var rule = {};
if (item == 'equals') /* special condition because 'equalTo' never makes it into this if block */
rule['equalTo'] = $(this).data(item);
else
rule[item] = $(this).data(item);
$(this).rules("add", rule);
}
});
});
问题似乎出在$('input[data-' + item + ']')
选择器上。无论出于何种原因,它都没有选择数据等于。它是保留的,还是由于某种原因无法通过jQuery选择?
现在根据 Yoshi 的反馈工作:
['minlength', 'maxlength', 'range', 'min', 'max', 'equalTo'].forEach(function (item) {
$('input[data-' + item + ']').each(function () {
var lowerItem = item.toLowerCase();
if ($(this).data(lowerItem)) {
var rule = {};
rule[item] = $(this).data(lowerItem);
$(this).rules("add", rule);
}
});
});
使用 jquery,您必须访问小写的数据属性。在您的情况下:
$(somelement).data('equalto');
如果这是不需要的,请尝试attr
$(somelement).attr('data-equalTo');
但是,在这种情况下,您将不会从jQuery获得自动解析。
演示:http://jsfiddle.net/BS6wy/1/
<div id="foo" data-equalTo="42"></div>
<script>
console.log(
$('#foo').data('equalTo'), // undefined
$('#foo').data('equalto'), // 42 (as number)
$('#foo').attr('data-equalTo') // "42" (as string)
);
</script>
相关文章:
- 如何使用jQuery选择下拉列表的值
- 按照选项卡索引的顺序循环一个jQuery选择
- 使用Jquery选择或取消选择ListView中的所有复选框
- jQuery选择器无法正常工作
- 使用基于文本的 Jquery 选择选项
- 将jquery选择器转换为数组
- JavaScriptDOM正常工作时JQuery选择器不工作
- 在我的情况下,使用带有变量失败的 jquery 选择器
- 换行符插入jquery选择器
- 使用javascript"这个“;用于jquery选择器
- jQuery选择器缓存问题
- jQuery 选择器,所有跨度都在 DIV 内
- JQuery选择器:如果同级具有.class,则选择td
- jQuery选择器不识别任何动态创建的HTML输入函数
- 循环遍历元素jquery选择器
- jQuery选择器错误:无法识别的表达式
- 自定义jquery选择器属性未在模拟器中激发
- Jquery选择器为空,我应该使用哪个作用域
- jQuery选择JavaScript生成的元素
- Jquery选择菜单选项在页面刷新时失败