javascript - jQuery div 可点击并跟随子 URL

标签 javascript jquery html

有人可以向我解释一下为什么这不起作用吗?

抱歉,我完全是 javascript + jQuery 的初学者。

代码如下:

Javascript/jQuery:

<script type="text/javascript"> 
    $('.clickk').click(function(e){
        window.location.href = $(this).find('a').attr('href');
    });
</script>

HTML:

 <div  class="clickk" >
    <a href="google.com">link</a>
    blah blah blah.
 </div>

请帮我找到我丢失的东西。

提前致谢。希望问题很清楚。

最佳答案

两个可能的问题:

  1. 您可能会在 DOM 中存在具有该类的任何元素之前执行该脚本(更多内容见下文)。

  2. 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's guidelines (或其他几个中的任何一个)。脚本上方定义的 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(或 $,这只是 jQuery 的别名,除非您使用 noConflict ) 与将 1 传递给 $(document).ready(...) 相同;详情:http://api.jquery.com/jQuery/#jQuery3

关于javascript - jQuery div 可点击并跟随子 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12660361/

相关文章:

javascript - 如何阻止子 div 继承父 div 的某些属性?

java - 如何使用 YML 配置禁用 Mustache 文件中的 anchor 元素?

jquery - Accordion 与 jQuery

javascript - JS-一键提交多个表单

Javascript 仅提取捕获组

Javascript 正在重新加载时执行

jquery - 仅针对特定容器宽度的图像动态宽度

javascript - 开关的javascript问题,图像和声音的情况

javascript - 如何自动滚动相关的 html 表格

javascript - array.splice 删除错误的值并保留错误的值