2

我有两个类和一个与其中一个一起使用的函数

$('.div-image').click(function(){                    // image zoom 
    $('#image').attr("src",img_src);

    $('.div-image').attr('class','div-image-big');

});

和html类似:

<div class="div-image">
<div id="wrapper">
<img id="image" src="image.jpg">
</div>
</div>

为什么在第一次单击图像或(div .div-image)后,我的类 div-image 更改为 div-image-big。但是如果我们再次单击函数 $('.div-image').click(function(){...} 将再次执行。问题是为什么会这样?我不需要这种行为。我想要这个仅当类为 div-image 而不是 div-image-big 时,该功能才起作用。谢谢。

4

1 回答 1

5

事件处理程序绑定在元素上,而不是类上。它绑定到哪些元素是根据它们在绑定事件时所具有的类来决定的,因此稍后更改类不会更改哪些元素具有事件处理程序。

如果您希望事件处理程序对类做出反应,您应该将委托绑定到父元素。这样,事件就会冒泡到父元素,并且委托处理程序将在那一刻检查该类。例子:

HTML:

<div class="image-container">
  <div class="div-image">
    <div id="wrapper">
      <img id="image" src="image.jpg">
    </div>
  </div>
</div>

Javascript:

$('.image-container').on('click', '.div-image' ,function(){                    // image zoom 
  $('#image').attr("src",img_src);
  $('.div-image').attr('class','div-image-big');
});
于 2012-11-13T23:15:35.600 回答