我正在尝试将样式应用于具有title属性的所有元素。出于某种原因,此代码仅返回第一个,而不是全部。我可能错过了一些明显的东西......任何帮助都会很棒,谢谢!
$("[title]").each(function() {
doSomething(this);
}
答案 0 :(得分:6)
你的代码是正确的(除了遗漏的);
我认为只是一个粘贴错误)并且应该有效。
它不起作用的唯一原因是你没有将代码包裹在$(document).ready中。如果您不熟悉$(document).ready,那么只要整个DOM结构可以被操作,jQuery就会触发一个特殊事件。如果你的页面顶部有你的Javascript,那么你在$(document).ready之外运行的任何东西都将针对一个空DOM,因为浏览器还没有时间创建节点。因此,无论何时您想要操作元素(尤其是查询以获取所有具有标题的元素),您肯定需要将代码放在此特殊事件周围。
记住这一点,我尝试了下面的代码,它会在带有标题的元素周围加上红色边框:
$(document).ready(function() {
$("[title]").each(function() {
$(this).css('border','1px solid red');
});
});
答案 1 :(得分:3)
我刚遇到这个问题。您是否正在使用this post中标识的旧版jquery.validate库?
对我来说,下载&应用latest version of the plugin工作
答案 2 :(得分:2)
您需要关闭每个(); 。
答案 3 :(得分:1)
它可能只是返回页面的TITLE元素。尝试:
$("*[title]").each(blah);
编辑:在测试时,这会做你想要的,但你实际拥有的也是如此,所以它必须与你的HTML有关。作为参考,这是我使用的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Blah</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
var titles = $('*[title]');
alert(titles.length);
});
</script>
</head>
<body>
<a title="blah" href="#">blah</a>
<a title="blah" href="#">blah</a>
<a title="blah" href="#">blah</a>
<a title="blah" href="#">blah</a>
<a title="blah" href="#">blah</a>
</body>
</html>
仅使用 var titles = $('[title]'); 返回5个元素,就像它应该有的一样。
答案 4 :(得分:1)
如果选择器发生奇怪的事情,首先尝试的一个很好的提示是检查渲染的标记是否可以在w3c实际验证。如果没有有效的dom,你可以从任何dom脚本和选择器中获得奇怪而精彩的东西。
答案 5 :(得分:1)
当您尝试在浏览器控制台中使用jQuery并且该页面上未安装jQuery时,可能会发生这种情况。