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の値が3で、別のキーの場合はCSSスタイルを追加しますuser007

これは私が最初の問題のために今日持っているものです、しかし私はそれが間違っていることを知っています:

$.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

フィードバックuser1545858をありがとう。

私は現時点でうまく機能する以下の解決策で終わりました:

    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 に答える