使用Ajax更改包含链接的标签内部文本

时间:2013-05-04 06:03:59

标签: c# javascript asp.net asp.net-mvc jquery

我有一个标签,其中包含以下链接:

<label id="textlabel" > <a href="#"  id="testlink">data</a> </label>

我正在尝试使用Ajax来更改标签文本,但它不起作用。

出于测试目的,它可以正常运行here,但它不适用于我的网页(网页是全新的,没有任何其他内容)。

$('#testlink').click(function(){
    $('#testlabel').text("new data");
});

JavaScript的:

function myfunc(clicked_id) {

            var label = document.getElementById(clicked_id).parentElement;
            var params = "{'orderid':'" + clicked_id + "'}";
            var fd = new FormData();
            fd.append("orderid", params);
            alert("test");

            $("'#" + clicked_id + "'").click(function () {
                $.ajax
                       ({
                           url: 'Handler.ashx',
                           data: fd,
                           processData: false,
                           contentType: false,
                           type: 'POST',
                           success: function (result) {
                               $("'#"+label.id+"'").text(result);
                               }
                       })
            });
        }

更新:

  1. 以下ajax一般适用

     <script type="text/javascript">
    function myfunc(clicked_id) {
        var params = "{'orderid':'" + clicked_id + "'}";
        var label = document.getElementById(clicked_id).parentElement;
    
        $("#"+label.id).click(function () {
            $.ajax({
                type: "POST",
                url: "Handler.ashx",
                data: clicked_id,
                success: function (result) {
                    $("#" + label.id).text(result);
                          }          
            }); });
    }
    

  2. 我花了很多时间来查明问题,现在我认为问题出现在自动生成的元素上。例如

    <table>
    <tr><td><label id="lbl" style="background-color:yellow">
    <a href="#" onclick="myfunc(this.id)" id="00000">Label</a>
    </label></td></tr>
    @for(int i=0;i<4;i++)
    {
     <tr><td>
    <label id="lbl+@i" style="background-color:yellow">
    <a href="#" onclick="myfunc(this.id)" id="@i">Label</a>
     </label></td></tr>
    }
    </table>
    
  3. ajax仅更改第一个标签'文本,而不更改其他自动生成的链接和标签。 单击自动生成的链接时,以下部分不会运行

                $("#"+label.id).click(function () {
                $.ajax({
                    type: "POST",
                    url: "Handler.ashx",
                    data: clicked_id,
                    success: function (result) {
                        $("#" + label.id).text(result);
                              }          
                }); });
    

    更新

    最后我发现了什么问题。它是我使用的标签ID。更改为“_”后,他们都有“+”,我的应用程序现在工作正常。

    感谢所有帮助过的人

2 个答案:

答案 0 :(得分:4)

问题代码更改后更新

中有一个小故障
success: function (result) {
    $("'#"+label.id+"'").text(result) 
}

应该是

success: function (result) {
    $("#"+label.id).text(result) 
}

另外,要测试标签对象是否存在,您可以添加

success: function (result) {
    console.log(label); // DON'T FORGET TO REMOVE THIS LINE LATER BEFORE DEPLOYING
    $("#"+label.id).text(result) 
}

也许是因为在您的测试功能中,您拼写错误标签的ID textlabeltestlabel

in

$('#testlink').click(function(){
    $('#testlabel').text("new data");
});

然后在您的真实代码中:

success: function (result) {
    $('#label.id).text(result);
}

#label.id

  1. 不是正确的jQuery选择器。它应该是'#textlabel'
  2. 它缺少结束'

答案 1 :(得分:1)

嘿如果您想更新包含链接的所有标签文本,请尝试使用此代码 我还更新了您的演示链接,请参阅

$('[id*="test"]').text("ddaadfa");

See Demo

如果您使用的是ajax,则必须在成功块中使用此代码来更改链接文本

success: function (result) {
    $('[id*="test"]').text("ddaadfa");
}