javascript - 如何获取使用 jQuery 单击的动态加载元素

标签 javascript jquery html ajax onclick

我正在将内容动态加载到我的页面中。单击其中一张图像时,我需要取消选择所有其他图像并选中已单击图像的复选框。如果单击复选框的图像、文本,我需要执行此操作。

this 包含所有 li 元素,而不仅仅是被点击的元素。 谁能建议我如何识别哪些 li 元素触发了代码?

$('#colours').click('li', function() {
  $(this).children('li').find('input').prop('checked', false);
  $(this).find('input').prop('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="colours">
  <li>
    <label for="">
            <img src="swatch-1.jpg" alt=""><input type="checkbox" value="1"> <span>Red</span>
        </label>
  </li>
  <li>
    <label for="">
            <img src="swatch-2.jpg" alt=""><input type="checkbox" value="2"> <span>Green</span>
        </label>
  </li>
  <li>
    <label for="">
            <img src="swatch-3.jpg" alt=""><input type="checkbox" value="3"> <span>Blue</span>
        </label>
  </li>
</ul>

最佳答案

首先,您似乎正在尝试创建委托(delegate)事件处理程序,但是您的语法不正确,这就是问题的原因。您需要使用带有事件名称和选择器的 on() 而不是 click。从那里您可以直接使用 this 引用选择 li,如下所示:

$('#colours').on('click', 'li', function() {
  $('#colours li').find('input').prop('checked', false);
  $(this).find('input').prop('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="colours">
  <li>
    <label>
      <img src="swatch-1.jpg" alt="">
      <input type="checkbox" value="1"> 
      <span>Red</span>
    </label>
  </li>
  <li>
    <label>
      <img src="swatch-2.jpg" alt="">
      <input type="checkbox" value="2"> 
      <span>Green</span>
    </label>
  </li>
  <li>
    <label>
      <img src="swatch-3.jpg" alt="">
      <input type="checkbox" value="3">
      <span>Blue</span>
    </label>
  </li>
</ul>

但是,您在此处创建的行为(一次只能选中一个复选框)与 radio 输入元素的标准行为相同。因此,只使用它们会更有意义。这样你根本不需要任何 JS 代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="colours">
  <li>
    <label>
      <img src="swatch-1.jpg" alt="">
      <input type="radio" name="swatch" value="1">
      <span>Red</span>
    </label>
  </li>
  <li>
    <label>
      <img src="swatch-2.jpg" alt="">
      <input type="radio" name="swatch" value="2">
      <span>Green</span>
    </label>
  </li>
  <li>
    <label>
      <img src="swatch-3.jpg" alt="">
      <input type="radio" name="swatch" value="3">
      <span>Blue</span>
    </label>
  </li>
</ul>

关于javascript - 如何获取使用 jQuery 单击的动态加载元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48668028/

相关文章:

php - 如何使用 html 表单数据创建 fpdf 表单

html - th 没有在一个单元格缩进

android - HTML5 数字字段不适用于 Android 4 上没有前导零的小数

javascript - JS Regex排除一系列特定数字

javascript - 无法在 VS 2015 中的 Windows 通用应用程序 (Javascript) 中运行 T4 模板

javascript - Backbonejs 和 defaultRoute

jquery - attachEvent 不是一个函数——使用模块模式

javascript - 如何为按钮文本设置动画? (加载类型的动画)-jquery?

javascript - 鼠标从触发器移开后保持 Div 可见(jQuery)

jquery - 以 cols 之间的边距居中一行