如何根据xmlHTTPRequest更改data-icon属性?

时间:2014-11-25 20:52:17

标签: php jquery ajax mobile

我正在尝试更改列表视图中给定行的数据图标。 jquery attr()函数和javascript setAttribute()函数都不起作用。

 <script>
    function increment(id) {
        var row = "row" + id;
      if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
      } else { // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
          document.getElementById("issue"+id+"Upvote").innerHTML=xmlhttp.responseText;
        $(row).attr("data-icon", "arrow-d");

        }
      }
      xmlhttp.open("GET","increment.php?q="+id,true);
      xmlhttp.send();
    }
    </script>


    //Fetching from your database table.
    $query = "SELECT * FROM $usertable";
    $result = mysql_query($query);

    if ($result) {
        while($row = mysql_fetch_array($result)) {
            $issue = $row["issueName"];
            $upvotes = $row["upvotes"];
            $id = $row["issueID"];
            echo "<li data-icon=\"arrow-u\" id=\"row".$id . "\"> <a href=\"point.php\">".$issue ."</a><a href=\"javascript:increment(".$id.");\"></a> <span id=\"issue".$id."Upvote\" class=\"ui-li-count\">" .$upvotes."</span></li>";

        }
    }

3 个答案:

答案 0 :(得分:0)

您将行设置为

var row = "row" + id;

但你的选择器是

$(row)

制作它,例如

$('row1')

如果是ID,则应为

$('#'+row)

编辑在您的选择器工作后,要更改jquery mobile中的图标,请使用buttonMarkup

$('#'+row).buttonMarkup({ icon: "star" });

答案 1 :(得分:0)

最好在插入dom之前更改html:

var toInsert = $( xmlhttp.responseText );
toInsert.attr("data-icon", "arrow-d");
$("#issue"+id+"Upvote").html().append( toInsert );

答案 2 :(得分:0)

想出来! $(row.toString())找到(&#39;的.ui图标&#39;)removeClass(&#39;的UI图标定制&#39;)。addClass(&#39; UI-icon-星&#39;);感谢