Jquery 使用 attr() returns 对象对象更改 HTML 属性
Jquery change HTML attribute using attr() returns object object
我已经阅读了多篇不同的文章和问题,但都无济于事。我有一个 PHP 页面,该页面将使用 AJAX 使用数据库中的值更新 easypiechart,每 X 分钟检查一次。在此示例中,我已将时间减少到 10 秒,并带有一个警告框以显示所做的更改。
我可以使用 attr() 查看 "data-percent",但是如果我尝试更改 "data-percent" 属性的值,它会 returns "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 属性?
.attr()
函数 returns jQuery 对象,当它用两个参数调用时。换句话说,你得到了 $("#test")
.
的值
这样做是为了让您可以做类似
的事情
$("#test").attr("foo", "bar").hide();
如果要查看 更改后的值,则:
var IDchange = $("#test").attr("data-percent", 90).attr("data-percent");
在阅读了大量文章后,我找到了 easypiecharts 本身的答案。与 easypiecharts 关联的 JS 将触及数据属性。阅读 easypiecharts 的文档我找到了答案:
$('#test').data('easyPieChart').update(90); //to update the chart to 90%
我的问题是解决问题的方向,因为大量文章都引用了 attr() 函数。对于我的场景,attr() 函数不会更新图表(prop() 也不会更新图表,除非刷新图表以直观地看到更新)。这些文章在与其他外部 JS 文件无关的元素上引用了此函数。
感谢大家的贡献,我今天学到了一些重要的教训。我希望有人发现这个答案对任何想要使用 AJAX 和具有动态百分比更新的 easypiecharts 的人都有帮助。
我已经阅读了多篇不同的文章和问题,但都无济于事。我有一个 PHP 页面,该页面将使用 AJAX 使用数据库中的值更新 easypiechart,每 X 分钟检查一次。在此示例中,我已将时间减少到 10 秒,并带有一个警告框以显示所做的更改。
我可以使用 attr() 查看 "data-percent",但是如果我尝试更改 "data-percent" 属性的值,它会 returns "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 属性?
.attr()
函数 returns jQuery 对象,当它用两个参数调用时。换句话说,你得到了 $("#test")
.
这样做是为了让您可以做类似
的事情$("#test").attr("foo", "bar").hide();
如果要查看 更改后的值,则:
var IDchange = $("#test").attr("data-percent", 90).attr("data-percent");
在阅读了大量文章后,我找到了 easypiecharts 本身的答案。与 easypiecharts 关联的 JS 将触及数据属性。阅读 easypiecharts 的文档我找到了答案:
$('#test').data('easyPieChart').update(90); //to update the chart to 90%
我的问题是解决问题的方向,因为大量文章都引用了 attr() 函数。对于我的场景,attr() 函数不会更新图表(prop() 也不会更新图表,除非刷新图表以直观地看到更新)。这些文章在与其他外部 JS 文件无关的元素上引用了此函数。
感谢大家的贡献,我今天学到了一些重要的教训。我希望有人发现这个答案对任何想要使用 AJAX 和具有动态百分比更新的 easypiecharts 的人都有帮助。