jQuery点击不启动

jQuery on click not firing

本文关键字:启动 jQuery      更新时间:2023-09-26

我知道这个问题已经被问了数千次,但我似乎无法解决我的问题。我只需要重新审视一下,看看我做错了什么或错过了什么。

这是我的代码:

<div class="image-container">
  @foreach (var image in Model)
  {
    <a href="#" class="returnImage" data-url="@Request.Url.GetLeftPart(UriPartial.Authority)@image.Url">
      <img src="@image.Url" id="UploadImage" data-source="@image.Url" width="200" height="200">
    </a>
  }
</div> 
<script>
  $(document).ready(function () {
    $("div.image-container").on("click", ".returnImage", function(e) {
      var urlImage = $(this).attr("data-url");
      window.opener.updateValue("cke_72_textInput", urlImage);
      window.close();
    });
  });
</script>

使用FireBug进行调试不会显示任何错误,当我在"点击"函数上设置断点时,它永远不会被命中/永远不会被激发。我在这里错过了什么?

可能发生的情况是,当您单击<a>标记时,它们具有优先权,从而抑制了div.image-container元素的单击事件。

如果您打算让用户单击整个容器本身,请尝试为模型中的每个图像使用除<a>标记之外的其他标记。

如果您打算在div.image-container中的每个<a>标记上放置一个点击处理程序,那么jQuery事件行应该是这样的:

$("div.image-container a").click(function(e) {

试试这个:

$(".returnImage").on("click", function(e) {
  //whatever action code
});

由于什么都没有启动,可能是您的弹出窗口阻止程序认为您的脚本试图劫持您的浏览器,因此正在阻止它,特别是因为它是一个<a>锚定标记,包含了会触发浏览器解释的默认链接行为的功能。下面的代码是添加了.preventDefault()行为例程的代码,以防出现问题。编辑:更新编码以更准确地针对您想要的DOM元素(正如其他答案所建议的那样)。

preventDefault API

  $(document).ready(function () {
    $(".returnImage").on("click", function(e) {
      e.preventDefault();
      var urlImage = $(this).attr("data-url");
      window.opener.updateValue("cke_72_textInput", urlImage);
      window.close();
    });
  });