我怎麼能在純JavaScript重寫這個jQuery的操作之前:插入HTML中的JavaScript元素沒有jQuery的
$("#my_id").before('<span class="asterisk">*</span>');
我怎麼能在純JavaScript重寫這個jQuery的操作之前:插入HTML中的JavaScript元素沒有jQuery的
$("#my_id").before('<span class="asterisk">*</span>');
這將做你想做的,而不需要像jQuery任何臃腫庫的支持。
var my_elem = document.getElementById('my_id');
var span = document.createElement('span');
span.innerHTML = '*';
span.className = 'asterisk';
my_elem.parentNode.insertBefore(span, my_elem);
謝謝。這對我來說很有用。 –
能夠幫助別人做出改變真是太好了,通常是我問問題! – Codemonkey
我建議使用Rob W的insertAdjacentHTML answer,FWIW。 – Codemonkey
你可以讓你自己的函數在JavaScript中一樣,
代碼
var id = document.getElementById('my_id');
var s = document.createElement('span');
s.innerHTML = '*';
s.className = 'asterisk';
id.parentNode.insertBefore(s, id);
您可以像以前一樣創建一個函數,
謝謝你的回答。 –
一個鮮爲人知的方法是element.insertAdjacentHTML
。使用這種方法(由所有主流瀏覽器支持,包括IE 4),您可以採用任意HTML字符串,並將其插入文檔中的任何位置。
說明了該方法的力量,讓我們用你的例子...:
$("#my_id").before('<span class="asterisk">*</span>');
變爲
document.getElementById('my_id').insertAdjacentHTML('beforebegin',
'<span class="asterisk">*</span>');
insertAdjacentHTML
的第一個參數確定插入位置。下面是使用jQuery的比較:
$().before
- 'beforebegin'
$().prepend
- 'afterbegin'
$().append
- 'beforeend'
$().insertAfter
- 'afterend'
正如你所看到的,這是非常容易使用。假設jQuery選擇器只返回一個元素,通常可以使用document.querySelector
,但在這種特定情況下,使用document.getElementById
會更有效。
很酷。我不知道這件事。謝謝。 –
@AymandOsanes考慮接受這個答案,而不是另一個。大多數用戶都知道像「insertBefore」和「appendChild」這樣的標準DOM方法,但是「insertAdjacentHTML」只是坐在一個滿是灰塵的角落。通過接受答案,它會碰到頂端,這將是用戶訪問此頁面時看到的第一個。 –
一個我從來不知道的好方法。 –
這是我們問「爲什麼」?每個人都有其理由。也許他誤導了不想使用jQuery,但他來這裏是爲了瞭解如何在沒有jQuery的情況下做到這一點,不要因爲不使用它而受到懲罰...... – Codemonkey
沒有評論或編輯的downvoting不會幫助他。它不是說「歡迎」的方式... – TheBronx
'document.getElementById('my_id')。before(span)'這是香草JS,加入ES5 – Gibolt