0

有人可以解释为什么下面的内容不起作用,因为它没有返回包装在标签中的单元格的内容吗?我将它与 DataTables 插件结合使用。我基本上想在单元格的当前内容周围加上一个链接。

$('table#example tbody td:nth-child(1), table#example tbody td:nth-child(2)').html('<a href="view-aae.asp?id=">[' + $(this).text() + ']</a>').click(function () {
    $("#thedialog").attr('src', $(this).next('.dialog').attr("href"));
    $("#somediv").dialog({
         width: 800,
         height: 600,
         modal: true,
         close: function () {
              $("#thedialog").attr('src', "about:blank");
         }
     });
     return false
 });
4

2 回答 2

1

问题是这this不是你想的那样。您似乎认为this在构造函数的参数时.html()将是具有其内容集的特定元素,但事实并非如此 - 它是其他东西(尽管具体取决于代码的上下文)。试试这个:

$('table#example tbody td:nth-child(1), table#example tbody td:nth-child(2)').html(function() {
    return '<a href="view-aae.asp?id=">[' + $(this).text() + ']</a>';
});

这种方式this 确实指的是具有其内容集的当前元素。

于 2013-07-08T13:19:49.717 回答
1

这不是this工作方式。

在您的情况下,$(this)可能是窗口,尝试将您的代码包装在 a 中.each(),它可能会起作用:

$('table#example tbody td:nth-child(1), table#example tbody td:nth-child(2)').each(function(){
    $(this).html('<a href="view-aae.asp?id=">[' + $(this).text() + ']</a>').click(function () {
        $("#thedialog").attr('src', $(this).next('.dialog').attr("href"));
        $("#somediv").dialog({
            width: 800,
            height: 600,
            modal: true,
            close: function () {
                $("#thedialog").attr('src', "about:blank");
            }
        });
        return false
    });
})
于 2013-07-08T13:20:13.243 回答