2013-07-18 31 views
0

美好的一天。獲取元素ID號並使用jQuery追加它

我正在嘗試使用jQuery從鏈接ID中提取序列號並使用jQuery對其進行追加。

<a class="links" id="link_*serial number goes here*" href="google.com"> Google.com </a> 

和腳本是這樣的

$('.links').append('<div> 
<label> Check this box to remove this link:</label> 
<input type="checkbox" id="delete_link_id'.parseInt($(this).attr("id"));.'></input></div>'); 

有什麼建議?

+1

嗯,**不要**追加一個標籤和錨內輸入!你確定你不想'.after()'而不是'.append()'? –

+0

這似乎是反覆的建議,請問爲什麼在這種情況下使用append這麼糟糕? – shultz

+0

正如我在我的回答中解釋的,在'a'標籤內放置'label' /'input'在所有當前版本的html中都是無效的。 –

回答

3

你可以這樣做:

var linkSerial = $(this).attr("id").split("_")[1]; 

而且,在你的代碼要追加到錨...我不認爲這是你想要的...

+0

只有一件事,當有更多的1個鏈接,使用$(this)會導致「未定義」任何想法? – shultz

+0

超過1個鏈接應該沒有關係......我有點困惑。 'this'將引用當前元素。 – tymeJV

1

而且這種方式

$(".links").prop("id").replace(/\D/g, '') 
+1

我確實認爲「split()」比RegEX壽命更快! – Bene

+2

是的,但正則表達式提供了靈活性,我不知道如何掩碼serialnumber,他可以稍後玩正則表達式來提取數字 – Overmachine

+0

你說對了,但從我的理解他的編碼方式,這總是會是link_ [id]。否則,他應該使用「.data()」方法的另一個屬性,如data-id =「[id]」,或者至少我會這樣做; P – Bene

1

tymeJV的回答是不錯如果您的序列號不包含任何下劃線。如果沒有,請立即投票並接受他的回答。

但是,如果有可能是序列號可以包含下劃線的可能性,你最好只用一個空字符串替換「link_」:

var linkSerial = this.id.replace('link_', ''); 

然後插入linkSerial無論你需要的序列號如:

'<input type="checkbox" id="delete_link_id' + linkSerial + '"/>' 

順便說一句,有你的代碼的一些其他問題:

  1. JavaScript中的連接運算符是+.
  2. 這是無效的放置label/input錨(a)標籤內。
  3. input標籤自動關閉,所以</input>無效。
+0

我不知道在內部使用它是無效的標籤。謝謝。 – shultz