1

源代码使用 JQuery 将加载事件处理程序添加到元素。我正在使用 JSTestDriver 对此进行测试。

代码看起来像这样:-

       $(this).load(function () {
           alert("Foo");
       });

当我运行测试时,警报(“Foo”)永远不会发生。如果我将其更改为:-

       $(this).ready(function () {
           alert("Foo with Ready");
       });

测试有效。

但是,如果源代码在 HTML 中单独执行,那么它运行良好,即使事件是“加载”,我也可以获得警报(“Foo”)。

这是 JSTestDriver 中的错误还是我做错了什么?做,我必须等到所有事件处理程序在单元测试中被触发。(关于 Thread.join() 的内容)?

-阿杰

4

2 回答 2

0

不知道为什么加载事件没有被绑定。一个更好的问题是为什么 jquery 有两个不同的同名方法(load() 来绑定事件,而 load() 来加载一些 ajaxed 内容)。这是您可能想尝试的另一种语法。

$(this).bind('load', handler);

如果这对您有用,请选中此答案旁边的复选标记。我正在努力获得足够的代表来发表评论哈哈。谢谢!

另外,你的绑定代码在哪里?是否有可能在图像已经加载后绑定事件?

于 2010-12-29T19:37:30.853 回答
0

我相信您的问题不在于事件绑定,而在于代码中 $(this) 的含义。

我们可以得到更广泛的范围吗?

一种测试方法是将 $(this) 替换为您尝试触发事件的元素的实际选择器。

甚至在事件绑定之前,进行此调用以确保元素的 id 与预期元素的 id 匹配。

alert($(this).attr('id'));
于 2010-12-29T20:19:39.477 回答