【问题标题】:$(this).load(function () { .... } ); not working along with JSTestDriver$(this).load(function () { .... } );不与 JSTestDriver 一起工作
【发布时间】:2010-12-29 18:29:48
【问题描述】:

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

代码看起来像这样:-

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

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

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

测试有效。

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

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

-阿杰

【问题讨论】:

  • $(this) 指的是什么类型的元素?
  • 我希望仅在图像加载完成后调用该函数

标签: jquery js-test-driver


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    我们能否获得更广泛的范围?

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

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

    alert($(this).attr('id'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      相关资源
      最近更新 更多