的問題是在運行時的全球範圍內的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