2010-01-13 48 views
1

嘿,我有一些代碼,我發現我寧願用jQuery代替直接的JavaScript。希望你們能幫助我把它轉換:將部分代碼轉換爲jQuery

var sub = document.getElementById('submit'); 
sub.parentNode.removeChild(sub); 
document.getElementById('btn-area').appendChild(sub); 
document.getElementById('submit').tabIndex = 6; 
if (typeof _some_var != 'undefined') { 
    document.getElementById('some-textarea').value = _some_var; 
} 
document.getElementById('something').style.direction = 'ltr'; 

我想這樣做的原因是因爲Firefox是告訴我,當它在第二行使用sub爲空。發生這種情況是因爲該代碼在出現submit按鈕之前運行。所以很自然地,我希望使用jQuery來在所有事情都準備好後運行代碼。是的,我知道在JavaScript中也可以這樣做,但我寧願使用jQuery。

謝謝!

+0

你不必調用removeChild之,因爲當你使用它的appendChild將首先從當前位置移除子項,然後只將其附加到新的位置。 – rahul 2010-01-13 05:56:50

+0

謝謝脈衝,就像我說過我繼承了這個代碼,但我肯定會做出這樣的改變來防止產生不必要的代碼。再次感謝! – 2010-01-13 05:58:30

+0

哦,哦,讀我的。我總是推薦使用JQuery進行dom操作,否則你不能相信它可以跨瀏覽器工作。 – orokusaki 2010-01-13 06:02:12

回答

3

絕對沒有必要爲此使用jQuery。假設你不已經有一個負載事件處理程序:

window.onload = function() { 
    // your code 
}; 

或者結束標記之前右扔,或提交按鈕後,更具體源的任何地方 - 沒有什麼真髒了。

<script src="your-code.js"></script> 
</body> 

然而,快速的jQuery改寫..

$(function() { 
    $('#submit').appendTo('#btn-area').attr('tabIndex', 6); 
    if (typeof yourVar != 'undefined') { 
     $('#textarea').val(yourVar); 
    } 
    $('#something').css('direction', 'ltr'); 
}); 

沒有測試。

+0

我已經解決了這個帖子中提到的問題,我只是覺得把這段代碼當作jQuery會更有意義,但我認爲那不是必須的。 – 2010-01-13 05:56:46

+0

所以我猜在這種情況下使用jQuery只會增加不必要的開銷,我不會使用它。無論如何感謝轉換。 – 2010-01-13 06:00:39

+0

非常多,並且如果您有很多腳本,它將與您的其他DOM腳本不一致。 – 2010-01-13 06:07:05

1

這就是:

var sub_html = $('#submit').html(); 
$('#submit').html(''); 
$('#btn-area').html(sub_html); 
$('#submit').attr('tabindex', 6); 
if(typeof _some_var != 'undefined') 
{ 
    $('#some-textarea').val(_some_var); 
} 
$('#something').css('direction', 'ltr');