JQuery选择带变量的元素

时间:2013-04-04 09:51:26

标签: jquery ajax

我正在尝试使用JQuery来接收包含名称值和分数值的响应。该代码应该与响应名称匹配,并在表格中显示分数,然后更新该名称表格行中的分数单元格。问题是,我不知道如何选择表元素。

这是功能:

function rollBall() {
var pins = $('#pins').val();
        $.ajax({
            type: "POST",  
            url: "/ajaxjqjsbowling/play.htm",  
            data: "pins=" + pins,  
            success: function(response){
                if(response.status == "SUCCESS"){
                    var cname = response.result.currPlayName;
                    var cscore = response.result.currPlayScore;

                $("td#plName [name = cname] + td#plScore").replaceWith('' + cscore);
            }

        },  
        error: function(e){  
          alert('Error: ' + e);  
        }  
      });
}

这是表格代码:

<table id = "playerslist">
    <c:forEach var="player" items="${players}">
    <tr id = "htmlplayerno"><td> ${player.htmlPlayerNo}:</td><td id = "plName">${player.name}:</td><td id = "plScore" >0</td></tr>
    </c:forEach>
</table> 
<table>

感谢阅读。

3 个答案:

答案 0 :(得分:0)

由于id是唯一的,为什么不只是:

$("#plScore").replaceWith('' + cscore);

答案 1 :(得分:0)

您需要将字符串连接在一起,否则它将只是字符串"td#plName [name = cname] + td#plScore"。您还需要使用类,因为有多个玩家且 id需要是唯一的

success: function(response){
    if (response.status == "SUCCESS") {
        var cname = response.result.currPlayName;
        var cscore = response.result.currPlayScore;

        $("td.plName:contains('" + cname + "') + td.plScore").html(cscore);
    }

<强> HTML

<table id = "playerslist">
    <c:forEach var="player" items="${players}">
    <tr class="htmlplayerno"><td> ${player.htmlPlayerNo}:</td><td class="plName">${player.name}:</td><td class="plScore" >0</td></tr>
    </c:forEach>
</table> 

替代解决方案

这是另一种可行的方式。

<强> HTML

<tr id="${player.name}" >
    <td class="plNo">${player.htmlPlayerNo}:</td>
    <td class="plName">${player.name}:</td>
    <td class="plScore">0</td>
</tr>

<强> JS

$("#" + cname + " .plScore").html(cscore);

答案 2 :(得分:0)

Html中的

是唯一的。如果你有多个tr,你必须使用课程。

<tr id="${player.htmlPlayerNo}" >
  <td> ${player.htmlPlayerNo}:</td>
  <td class="plName" >${player.name}:</td>
  <td class="plScore" >0</td>
</tr>

然后

$("#" + ${player.htmlPlayerNo} + " td.plScore").html(cscore);