Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 动态添加元素时,不会执行onclick事件处理程序中的函数_Jquery_Ajax_Spinner - Fatal编程技术网

Jquery 动态添加元素时,不会执行onclick事件处理程序中的函数

Jquery 动态添加元素时,不会执行onclick事件处理程序中的函数,jquery,ajax,spinner,Jquery,Ajax,Spinner,我很难将gif图像与IE一起使用,然后我发现,在这方面,是什么让我的生活轻松了很多。然而,我有一个问题。我正在使用Ajax调用使用数据重新加载一个表。每行都有一个动态添加的和onclick事件: <button value= row[0] onClick="showDetailedInfo(this);return false;">Details</button> 然而,当我在寻找可能的解决方案时,我读到初始化这样的选项可能会导致这个问题,我切换到jQuery插件,现在

我很难将
gif
图像与
IE
一起使用,然后我发现,在这方面,是什么让我的生活轻松了很多。然而,我有一个问题。我正在使用
Ajax
调用使用数据重新加载一个表。每行都有一个动态添加的
onclick
事件:

<button value= row[0] onClick="showDetailedInfo(this);return false;">Details</button>
然而,当我在寻找可能的解决方案时,我读到初始化这样的选项可能会导致这个问题,我切换到
jQuery
插件,现在我简单地如下调用微调器:

var opts = {
  lines: 13, // The number of lines to draw
  length: 20, // The length of each line
  ... more options
  }

var target = document.getElementById('foo');
var spinner = new Spinner(opts).spin(target);
$('#foo').spin()

但行为没有改变。仍然不确定
选项
部件是否没有出现问题。现在我没有使用自定义选项,我让微调器使用它的默认选项,所以我认为这应该不是一个问题,但无论如何。为什么会发生这种情况,以及如何使我的微调器工作?

您的代码已经过时。您可以通过jquery单独的文件处理实时事件,对于访问“动态”添加的元素,您必须使用
$(文档)

您的代码应该是

jQuery(document).ready(function($){
  $(document).on('click', 'button', function( e ){
    e.preventDefault();
    showDetailedInfo( this );
  });
});

它可能需要一些小的修改(它在页面内查找所有
按钮,我不知道
showDetailedInfo
的具体功能)

您能提供
showDetailedInfo
函数和函数的代码吗,其中添加了
按钮
s?此外,
onclick=”“
是一种过时的处理事件的方式。@Regent结果表明,因为在
$.ajax
调用中,
async
选项被设置为
false
我得到了这种行为。事实上,这并不是因为我第一次思考时动态渲染了按钮。尽管我想知道为什么在调用
$('#foo').spin()
之前调用
$.ajax
时会出现这种行为。函数本身很长,因为我收集了很多数据,但本质上它调用微调器,触发ajax调用,而另一个调用只是收集字段数据。现在,您知道为什么
async:false
是非常糟糕且不受欢迎的事情了,不是吗?:)@丽晶我不知道它被弃用了。不过,
Ajax
可能是从服务器发送/接收数据的最简单方法,而且在某些情况下,您必须在
synch
模式下使用它。并不是说没有编程解决方案,而是最终业务需求接管了良好的编程逻辑。不过,谢谢你为我的问题抽出时间!关于必须在同步模式下使用它的情况:这些情况是不正确的代码组织,而不是“必须”的情况。您可以始终使用回调函数或
$.Deferred
promise
来处理这些情况。真正地将浏览器进程挂起几秒钟不是一个好主意。我同意你的看法。我唯一无法解决并让我使用
onclick
的问题是,我无法检测触发事件的确切按钮,因此无法获取其值,因为该值是我使用的
id
。。主要是为了一切。但是我知道这样一个事实,如果我有10行代码,那么当事件被触发时,有10个按钮,那么我如何获取实际触发它的按钮的
值。正如您在我的代码中所看到的,我传递了一个属性
行[0]
,它是
eval()
ed到实际的Id号。如何使用此方法获取此id?@Leron
被传递给此答案中的
showDetailedInfo
函数,因此您可以像在原始代码中一样使用它
这个
指向元素,触发了该元素的事件处理程序。嗯,尝试一下。非常感谢你的提醒。