的问题是在运行时的全球范围内的jQuery对象的缓存。下面是你的代码 2段(从你的问题的链接:http://jsfiddle.net/adardesign/aZRK7/12/):
HTML:
<div id="qunit-fixture">
<span id="ele1" class="action" data-action="action1"></span>
<span id="ele2" class="action" data-action="action2" ></span>
</div>
JS:
// caching elements
var $ele1 = $('#ele1'),
$ele2 = $('#ele2');
test('action1', function() {
ok($ele2.trigger('click') ....
test('action2', function() {
ok($ele1.trigger('click') ....
的实际元素是#qunit-fixture
这里面复位和重新分析每个测试,从而从内部测试引发对现在在document
不再元素触发的单击事件。相反,这些元素已被分离,#qunit-fixture
已从原始html文本重新分析,从而创建新的DOM元素。
我叉你的jsfiddle并作相应修改它:http://jsfiddle.net/aZRK7/15/
虽然我清理各个地方之前,我注意到了这一点,将发生本质的变化是移动的元素查询到的测试里面:
test('foo', function() {
var $foo = $('#ele1');
ok($foo.trigger('click') ....
test('bar', function() {
var $bar = $('#bar');
ok($bar.trigger('click') ....
第二个测试是做什么的?我不确定什么'click'函数没有任何参数。 – 2013-05-08 18:03:01
点击功能本身不带参数的'trigger'是点击 – adardesign 2013-05-08 18:05:03
很奇怪。我已经更新了两次包含这两个测试,并使它们异步暂停,但只有一个测试运行。这就像点击/触发器在第一个之后放弃。 http://jsfiddle.net/bAbNd/1/。 – 2013-05-08 18:36:40