两个可能的问题:
您可能在 DOM 中存在具有该类的任何元素之前执行该脚本(更多内容见下文)。
href
应该以、http://
例如href="http://www.google.com"
或开头href="http://google.com"
。只是href="google.com"
使它成为一个相对链接,它不会可靠地工作。
假设你修复了#2,这里有一些关于#1的细节:
不会工作:
<!-- ... -->
<head>
<!-- ... -->
<script type="text/javascript">
$('.clickk').click(function(e){
window.location.href = $(this).find('a').attr('href');
});
</script>
</head>
<body>
<!-- ... -->
<div class="clickk" >
<a href="http://google.com">link</a>
blah blah blah.
</div>
有两种方法可以解决此问题:
将脚本放在页面末尾
这通常是首选方式,将脚本放在页面末尾,而不是开头。
作品:
<body>
<!-- ... -->
<div class="clickk" >
<a href="http://google.com">link</a>
blah blah blah.
</div>
<!-- ... -->
<script src="jquery.js"></script>
<script type="text/javascript">
$('.clickk').click(function(e){
window.location.href = $(this).find('a').attr('href');
});
</script>
</body>
这还通过在等待脚本下载时不暂停渲染来减少明显的页面加载时间。请参阅YUI 的指南(或其他任何指南)。该脚本可以访问在脚本上方定义的DOM元素。脚本下方定义的 DOM 元素不是(除非您执行以下类似操作来延迟事情)。
使用ready
事件
如果由于某种原因将脚本放在最后不适合,您可以使用该ready
事件:
作品:
<!-- ... -->
<head>
<!-- ... -->
<script type="text/javascript">
jQuery(function($) {
$('.clickk').click(function(e){
window.location.href = $(this).find('a').attr('href');
});
});
</script>
</head>
<body>
<!-- ... -->
<div class="clickk" >
<a href="http://google.com">link</a>
blah blah blah.
</div>
请注意,将函数传递给jQuery
(或 into ,除非您使用,否则$
它只是一个别名)与将函数传递给;是相同的。详情:http ://api.jquery.com/jQuery/#jQuery3jQuery
noConflict
$(document).ready(...)