foreach不在事件js内执行

时间:2016-11-26 22:43:03

标签: javascript each

有两个简单的htmls,点击第一个html中的任何href,重定向到第二个html并在类'clazz'的所有obj上执行某些操作:

首先是html:

<body>
<a class="link" id="1" href="display.html" >flower 1</a>
<a class="link" id="2" href="display.html" >flower 2</a>
<script src="http://code.jquery.com/jquery-latest.min.js"
    type="text/javascript"></script>
<script src="js/script.js"></script>
</body>

第二

  <body> 
  <img class ="clazz" id="1" src="https://">
  <img class ="clazz" id="2" src="https://">
  <script src="http://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>
  <script src="js/script.js"></script>
</body>

JS:

 $(document).ready(function() {
    $('.link').on('click', function( event ) 
     {
         $(".clazz").each(function() {
           alert("hey");
         });
     });
 });

虽然代码很简单但有些奇怪的事情发生了...... 从不调用.each on clazz。当将.each部分移出link.onClick时 - 它会显示警报,所以我认为问题不是js中第二个html的无法识别的类'clazz'。还有什么呢?

2 个答案:

答案 0 :(得分:1)

如果您只想在链接点击时执行代码而不是默认链接操作(即“转到另一个页面”),您需要添加一行代码 - 调用{{1 }}

preventDefault()

https://api.jquery.com/event.preventdefault/

答案 1 :(得分:1)

即使您在js/script.js中都有相同的javascript文件html。 每个页面/ html请求将以不同方式调用每个javascript文件。

在你的第一个HTML中 a.link将在click上调用,但没有a.class

 `a.class === undefined`  //in your 1st html

在第二个HTML中 您有a.class,但没有a.link。因此,第二个html中的javascript无法在click上注册a.link个事件。

`a.link === undefined`    //in your 2nd html