2013-03-05 125 views
3

我目前正在創建一個表格,允許我按升序和降序對行進行排序以及單擊並拖動列。我有這個工作,但我想改進它。目前我得到的頭部和單元元素文本然後連接HTML標籤的字符串:獲取HTML標籤和文本

var row = "<td>" + myData + "</td>";

如果jQuery有一個方法/函數,讓我得到我想知道的是標籤附加到一個元素的文本。我已嘗試.text().html().contents();.parent().html()。函數.parent().html()與我想要的最接近,但它給我帶有標籤和文本的所有行,而不僅僅是我想要的那一行。

所以我想保存在我的變量是<th>First Column</th>不只是First Column

這裏是什麼,我已經試過和基本的HTML標記並鏈接到我研究了API小提琴例如:

Fiddle

.text() .html() .contents() .parent()

更新:

對於那些好奇,爲什麼我這樣做,這裏是我這邊的項目:

Table Sorter

+1

[Get selected element's external HTML](http:// stackoverflow。com/questions/2419749/get-selected-elements-outer-html) – Quentin 2013-03-05 15:10:10

+0

通過將HTML連接爲文本來實現排序聽起來不是一個好主意。如果你只是使用jQuery方法來移動元素,那會更好。 – JJJ 2013-03-05 15:12:40

+0

我會檢查出來的,我一直沒有找到任何東西,但得到一個特定的元素或文本。謝謝,我會看看是否有幫助。 – defaultNINJA 2013-03-05 15:12:43

回答

3

可以使用outerHTML屬性。

var html = $(this).prop('outerHTML'); 

或者:

var html = this.outerHTML; 

http://jsfiddle.net/Qy8GS/

+0

像冠軍一樣棒極了!我覺得必須有一些東西,但我找不到它:(時間限制之前,我可以接受它,你太快了! – defaultNINJA 2013-03-05 15:15:10

1

http://jsfiddle.net/aCTva/1/

$.fn.outerHTML = function() { 
    var $t = $(this).eq(0); 
    if ("outerHTML" in $t[0]) { 
     return $t[0].outerHTML; 
    } else { 
     return $t.clone().wrap('<div></div>').parent().html(); 
    } 
}; 


alert($(this).outerHTML()); 
+0

工作小提琴+1,感謝您的幫助! – defaultNINJA 2013-03-05 15:27:53

0

只是把你指向的方向..

var test = document.getElementById('test') //returns a HTML DOM Object 
var test = $('#test') //returns a jQuery Object 
var test = $('#test')[0] //returns a HTML DOM Object 

所以我猜你需要$('#test')[0].outerHTML

0

新的jsfiddle:http://jsfiddle.net/EdD7U/2/

$("tr").each(function() { 
    var colIndex = 0; 

    $(this).find("td").each(function() { 
     $(this).parent().parent().find('th') 
      .each(function(index) { 
       if (index == colIndex) { 
        var colHeader = $(this).prop("outerHTML"); 
        alert(colHeader); 
       } 
      }); 

     colIndex++; 
    });    
}); 

基本上,節省的指數tr你在,再抓幾個家長了DOM(以table)然後找到th標籤。對於每個th標籤,僅輸出原始tr索引的th。您試圖獲得的變量是colHeader