1

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

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

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

出于测试目的,它可以在这里工作,但不能在我的网页上工作(该网页是全新的,没有其他任何东西)。

$('#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>
    

ajax 仅更改第一个标签的文本,但不会更改其他自动生成的链接和标签。单击自动生成的链接时,以下部分不会运行

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

更新:</p>

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

感谢所有帮助过的人

4

2 回答 2

5

问题代码更改后更新

里面有个毛病

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

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

?

然后在你的真实代码中:

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

#label.id

  1. 不是正确的 jQuery 选择器。它应该是'#textlabel'
  2. 它缺少关闭 '
于 2013-05-04T06:34:39.970 回答
1

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

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

看演示

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

success: function (result) {
    $('[id*="test"]').text("ddaadfa");
}
于 2013-05-04T16:44:45.147 回答