2013-03-05 116 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