我正在尝试将样式应用于具有title属性的所有元素.出于某种原因,此代码仅返回第一个,而不是全部.我可能错过了一些明显的东西......任何帮助都会很棒,谢谢!
$("[title]").each(function() {
doSomething(this);
}
Run Code Online (Sandbox Code Playgroud)
你的代码是正确的(除了遗漏,);我认为只是一个粘贴的错误),应该工作.
它无法工作的唯一原因是你没有将代码包裹在$(document).ready中.如果您不熟悉$(document).ready,那么只要整个DOM结构可以被操作,jQuery就会触发一个特殊事件.如果你的页面顶部有你的Javascript,那么你在$(document).ready之外运行的任何东西都将针对一个空DOM,因为浏览器还没有时间创建节点.因此,无论何时您想要操作元素(尤其是查询以获取具有标题的所有元素),您肯定需要将代码放在此特殊事件周围.
牢记这一点,我尝试了以下代码,它会在带有标题的元素周围放置一个红色边框:
$(document).ready(function() {
$("[title]").each(function() {
$(this).css('border','1px solid red');
});
});
Run Code Online (Sandbox Code Playgroud)
它运作正常.
它可能只是返回页面的 TITLE 元素。尝试:
$("*[title]").each(blah);
Run Code Online (Sandbox Code Playgroud)
编辑:在测试中,这将执行您想要的操作,但您实际拥有的也会执行此操作,因此它必须与您的 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>
Run Code Online (Sandbox Code Playgroud)
仅使用var title = $('[title]'); 返回了 5 个元素,它应该有。
| 归档时间: |
|
| 查看次数: |
5940 次 |
| 最近记录: |