2012-12-21 16 views
0

我想比較兩個元素塊並查看它們是否相同。我想比較的項目有隱藏的輸入,而且我遇到了這個錯誤,我認爲這與隱藏的輸入有關:QUnit - 比較隱藏的輸入 - TypeError:selectionDirection輸入

TypeError:在無法選擇的輸入元素上訪問selectionDirection。

這裏是我的代碼的簡化版本(還有什麼是在的jsfiddle):

test("compare input", function() { 
    var input1 = $('<input/>').attr("value", 'cool_play'); 
    var input2 = $('<input/>').attr("value", 'cool_play'); 
    deepEqual(input1, input2); 
}); 

test("compare hidden input", function() { 
    var input1 = $('<input/>').attr("type", "hidden").attr("value", 'cool_play'); 
    var input2 = $('<input/>').attr("type", "hidden").attr("value", 'cool_play'); 
    deepEqual(input1, input2); 
});​ 

第一個例子通過,但第二個示例引發一個錯誤。

這裏的jsfiddle例如:http://jsfiddle.net/HLG5y/1/

有沒有一種方法來比較隱藏類輸入元素?我是否以錯誤的方式嘗試了這個?謝謝。我覺得我應該能夠比較隱藏的輸入。

+0

看起來'deepEqual'比較對象的每個屬性,並且這樣做會在隱藏的輸入上引發特定DOM屬性的錯誤。也許你可以更精確地定義兩個輸入是否相等(例如手動檢查類型和類)。 – pimvdb

+0

@pimvdb - 我會的,但是我比較的實際上是一個嵌套元素塊,input元素就在它的中心。如果沒有辦法繞過它,我想我將不得不一一比較它的部分內容。 :( –

+1

我的意思是它很容易出錯 - 例如,如果您將DOM1的元素添加到DOM到同一父級,那麼他們的「nextSibling」會變得不同,並且他們突然不會再平等。 – pimvdb

回答

1

這不是一個理想的解決方案,但我解決這個得到比較

equal(actual.html(), expected.html()); 

其中實際和預期的元素的塊。