2012-05-05 45 views
0

這是我的代碼:
假設name設置爲johnjQuery的包含選擇,正則表達式

$("#first_table").append($('#second_table').find("tr:contains(" + name + ")")); 

基本上我有我的網站2個表。我想將元素從第一個移動到第二個,但前提是它們完全匹配。我怎樣才能做到這一點?

現在,如果我有(例如)johnjohn #1,john #2在我的表中,他們都將被移動。我只想移動john並離開john #1john #2 謝謝! 編輯: 我希望代碼能夠正確匹配變量name。 因此,如果nameJOHN它只能得到JOHN。如果是JOHN #1,則只能得到JOHN #1等等。這可能嗎?

回答

0

由於每一個名字的情況下是有效的:contains(" + name +")聲明,它匹配所有的人。

試試這個,用:not省略了一個以「#」

$("#first_table").append($('#second_table').find("tr:contains(" + name + "):not(:contains('#'))")); 

更新:

如果要得到準確的內部價值。然後用這樣的東西

$("#second_table tr td").each(function() { 
    if($(this).text() == 'John') { 
    $(this).closest("tr").appendto($("#first_table")); //find the cotaining tr and append to another table 
    } 
}); 
+0

謝謝! 還有一件事 - 例如,我怎麼能得到約翰#2? 我希望代碼能夠正確匹配變量名稱。 所以如果名字是約翰,它只能得到約翰。如果它是約翰#1,那麼它只能得到約翰#1等等。這可能嗎? – pangi

+0

@JernejPangeršič,請參閱更新 – Starx

+0

感謝您的答案,但它由於某種原因不起作用。 – pangi

0

可能是缺少引號的情況。嘗試在name附近添加單引號,如下所示。

$("#first_table").append($('#second_table').find("tr:contains('" + name + "')")); 
+0

我試過了,但它不起作用。雖然感謝您的回覆! – pangi

+0

@JernejPangeršič,你確定沒有任何東西會影響選擇器,因爲'John A'不包含'John B',所以兩個條目都不應該移動。你能確定「名字」肯定是「約翰A」,而不是「約翰」? – Nadh

+0

對不起,我解釋錯了。我編輯了原文,看看它。對不起給您帶來不便。 – pangi