【问题标题】:Html in jquery stringjQuery字符串中的HTML
【发布时间】:2013-09-19 17:45:12
【问题描述】:

我需要从字符串中解析 html 的最佳方法,我尝试过 .html();它不起作用。我需要它在 cdata 变量上。

$(document).ready(function () {
var anOpen = [];
var oTable = $('#table_id').dataTable();

$('#table_id tbody').on('click', 'tr', function (e) {
    var nTr = this;
    var i = $.inArray(nTr, anOpen);
    var cdata = this.cells[1];

    console.log(cdata);
    if (i == -1) {
        $(this).addClass('row_selected');
        var nDetailsRow = oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr, 1), 'details');
        $('div.innerDetails', nDetailsRow).slideDown();
        anOpen.push(nTr);
    }
    else {
        $(this).removeClass('row_selected');
        $('div.innerDetails', $(nTr).next()[0]).slideUp(function () {
            oTable.fnClose(nTr);
            anOpen.splice(i, 1);
        });
    }
});

【问题讨论】:

  • 在给出的代码中,查询字符串的解析发生在哪里?
  • 请将 cmets 添加到您的代码中。
  • 当我在 console.log(cdata) 我得到 infotextblah 我需要 html 代码,只需要 infotextblah。
  • 您想要去除 HTML?请参阅我的答案的后半部分。

标签: javascript jquery datatables


【解决方案1】:

首先,您应该使用$(this) 而不是javascript this。只是为了连贯性,当你可以用jQuery实现时,最多尝试使用jQuery。

使用jQuery你可以做到

$myTd = $(this).find("td").get(1) ;

$myTd.text() 在此处提供您的文本。见http://api.jquery.com/text/

使用 javascript,您想获取 td 标记的内部内容...所以this.cells[1].innerHTML 返回您的标记的 innerHTML,在您的情况下就是您的文本。

【讨论】:

  • 我对为什么.find 有点困惑,难道没有办法在没有 html 的情况下指定第二列数据吗?当我执行 $(this).find("td").first() 时,我得到了整个对象。我没有为该列分配 tdclass。
  • 抱歉,你想要第二个 td。没注意。好吧,您对 this.cells[1] 的调用也会返回 td 本身。如果你想要一个 javascript 解决方案,因为你在这条线上使用了 javascript,我会使用 this.cells[1].innerHtml。
  • Uncaught TypeError: Object # has no method 'innerHtml'
  • innerHTML 抱歉。更新了答案。
【解决方案2】:

html() 是您尝试从元素中获取数据的方法。

$(document).ready(function(){
    var html_str = $("#foo").html();
    alert("Your HTML is: " + html_str); 
});

见:http://jsfiddle.net/4q6AZ/

如果您希望去除所有 HTML 标签,您可以考虑:

var html_string = '<h1>Test</h1><p>A paragraph with a <a href="link">link</a></p>';
var regex = /<(\/?)[a-zA-Z0-9][^>]*>/g;
var stripped = html_string.replace(regex, '');
$("#result").html(stripped);

见:http://jsfiddle.net/Y6q2j/5/

【讨论】:

    【解决方案3】:

    Jquery .text() 将返回文本而不是 HTML 元素。 http://api.jquery.com/text/

    【讨论】:

    • 是的,但无论如何他的 td 只包含文本。那不会有帮助的。他现在甚至没有使用 jQuery 来获取他的文本。
    猜你喜欢
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2013-05-12
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多