【问题标题】:Issue With Event Handlers From Loaded Data加载数据中的事件处理程序问题
【发布时间】:2015-08-05 19:43:31
【问题描述】:

所以,在 .load(); 之后进行交互时,我在使用事件处理程序时遇到了一些麻烦。执行的功能。

在页面上,当单击单选按钮时,回调会加载内页/数据,没问题。但是,当我尝试使用内部元素中的 on.(click) 事件时,该函数会失败。所有代码都在顶层。知道事件失败的原因吗?

$('#radical input[type=radio]').on('click', function() { $('.subradical').load('../page');
});

这很好用,它可以很好地加载页面内的数据。

$('#radical .subradical li').on('click', function() {
var one = $(this).attr('id');
var two = $(this).attr('pic');
var three = $(this).attr('title');
$('#radical .display').css('background:url(../imgs/'+two+'); background-size:cover');
$('#radical .display .title').text(three);

});

这不起作用。

解释一下:“激进”是最高级的。 “subradical”为空,显示加载的数据(php)。 从“subradical”中加载的数据中单击 li 的事件应该触发抓取 attrs 并将它们放入“radical”显示元素中,但事实并非如此。有什么我在这里没有看到的吗?

谢谢。

编辑:

奇怪的是,当我执行这个函数时:

$('#radical .subradical').on('click', function(e) {
alert('this works');});

警报显示。但是,当我添加 LI 时它会失败。

$('#radical .subradical li').on('click', function(e) {
alert('this does not work');});

【问题讨论】:

  • 运行此页面时浏览器的开发者工具控制台中有什么内容?
  • 你好,卡尔。没有看到任何错误。在 Win10 上使用 Chrome。

标签: jquery onclicklistener innerhtml


【解决方案1】:

如果我正确理解您的问题,我认为这可能是因为带有两个操作数的 on("click", function(){}) 仅适用于在调用它时存在的对象,而不适用于创建的对象(在您的装箱)稍后。我认为您需要使用 on 函数的三参数形式并在确实存在的东西上调用它,如

$("#existing-container").on("click", ".selector-for-something-created-later",
   function(e){ 
     dosomething(); 
   });

【讨论】:

  • 弗兰基,根据你的建议,我添加了第三条腿,它似乎工作得很好。干杯,谢谢。投票赞成。
猜你喜欢
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2018-08-18
相关资源
最近更新 更多