0

我是 jquery 的新手,希望能得到一点帮助。

我有一个页面,它以格式获取数据getJSON并将所述数据插入页面上的元素中。然后页面每 2 秒刷新一次以获取更新的数据。

页面上正在更新的元素示例:

<abbr title="mouse hover description" id="User004">..updated by getJSON..</abbr>

这是我获取和刷新abbr元素内容的方式(可行):

function refreshData()
    {
        $.getJSON('http://domain.com/Data.php',function(User) {
            $.each(User, function(key, val) {
                $('#'+key).text(val);
              });
            });

    }
    window.setInterval("refreshData()", 2000);

我想要完成的是:
A)如果键user004的值为 2,
则添加 CSS 样式。B)如果键user004的值为,而另一个键user007为 3,则添加 CSS 样式。

这是我今天第一个问题的内容,但我知道这是不正确的:

$.getJSON('http://domain.com/Data.php',function(User) {
            $.each(User, function(key, val) {
                $('#'+key).text(val) {
                    if ($('#user004:contains("2")'))
                    {
                        $("#"+key).css({color: '#9a4d9e', cursor: 'default'});
                    }
                }
              });
            });
4

2 回答 2

1

我认为您在执行 $('#user004:contains("2")') 时误解了 jQuery 在做什么。在这种情况下,jQuery 将始终返回一个对象(恰好是 jQuery 本身)。如果你想检查是否有匹配,你可以使用

if ($('#user004:contains("2")').length > 0)

虽然老实说,我不太确定你为什么会这样做。你既有键又有值,为什么不直接使用它们而不是从 DOM 中提取它们呢?这似乎效率低下。

于 2013-01-30T00:31:18.383 回答
0

感谢用户 1545858 的反馈。

我结束了以下解决方案,目前效果很好:

    function refreshData()
    {
        $.getJSON('http://domain.com/Data.php',function(Callcenter) {
            $.each(Callcenter, function(key, val) {
                $('#'+key).text(val);
              });
            });


        // Add custom style if value equals
        if (($("#User004").text() == "0") && (($("#User007").text() < "4"))) {
            $("#User004").css("color","red");
        }
    }

        // Refresh the above every 2 seconds...
        window.setInterval("refreshData()", 2000);
于 2013-01-30T11:15:36.760 回答