使用attr()返回Jquery更改HTML属性返回对象对象

时间:2016-09-07 21:56:57

标签: javascript jquery attr

我读过多篇不同的文章和问题无济于事。我有一个PHP页面,它将使用AJAX使用数据库中的值来更新easypiechart,每隔X分钟检查一次。在这个例子中,我通过一个警告框将时间减少到10秒,以显示已经进行了哪些更改。

我可以使用attr()来查看“data-percent”,但是如果我尝试更改“data-percent”属性的值,它会返回“Object Object”。

我正在尝试手动将值暂时更改为90,直到我可以在添加ajax响应作为替换之前使此功能正常工作。

代码:

    <!-- Link to Google CDN's jQuery + jQueryUI; fall back to local -->
<div id="test" class="easy-pie-chart txt-color-blue easyPieChart" data-percent="38" data-pie-size="160">
    <span class="percent percent-sign txt-color-blue font-lg semi-bold"></span>
</div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
    if (!window.jQuery) {
        document.write('<script src="js/libs/jquery-2.1.1.min.js"><\/script>');
    }
</script>

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script>
    if (!window.jQuery.ui) {
        document.write('<script src="js/libs/jquery-ui-1.10.3.min.js"><\/script>');
    }
</script>

<script>
// Setup AJAX request -->
function updateWidgets(){
    $.ajax({
      url: "widgetGet.php",
      type: "POST",
      success: function(data) {
        var response = $.parseJSON(data);
        var idea = parseInt(response.test);
        var ID = $("#test").attr("data-percent");
        var IDchange = $("#test").attr("data-percent", 90);
        alert(ID);
      }
    });
  }

  updateWidgets();
  setInterval(updateWidgets, 10000);
  </script>

如果您将警报从ID切换到IDchange,您可以看到我的问题所在。谢谢你,因为我知道我在这里的一个伟大的社区的手中。

更新,可以理解,警报功能不应该用于调试。问题(并且不确定是否attr())的解决方案是使用每10秒启动一次的AJAX响应来更新html属性。诸如this之类的文档显示使用attr()更新属性,这会导致我的困惑。

简而言之,如何使用每10秒接收一次数据的AJAX更新包含easypiechart的div的html属性?

2 个答案:

答案 0 :(得分:3)

.attr()函数在使用两个参数调用时返回jQuery对象。换句话说,您将获得$("#test")的价值。

这样做可以做到像

这样的事情
$("#test").attr("foo", "bar").hide();

如果您希望在更改后看到值,则:

var IDchange = $("#test").attr("data-percent", 90).attr("data-percent");

答案 1 :(得分:1)

在阅读了大量文章之后,我找到了回答,这本身就是一个简单的问题。与easypiecharts相关联的JS将触及data属性。阅读easypiecharts的文档我找到了答案:

$('#test').data('easyPieChart').update(90); //to update the chart to 90%

我的问题是解决问题的方向,因为大量文章引用了attr()函数。对于我的场景,attr()函数不会更新图表(也不会更新prop(),除非刷新图表以直观地看到更新)。那些文章在一个与其他外部JS文件没有关联的元素上引用了这个函数。

感谢大家的贡献,今天我学到了一些重要的经验教训。我希望有人发现这个答案对任何想要使用动态百分比更新的AJAX和easypiecharts的人都有帮助。