-1

私のページにはno.ofのチェックボックスがあり、2つのカテゴリとしてフィルタリングしています。サーバー値と等しい値を持っている場合、クラスを追加しています..要素(5要素)のこの部分1。残りは要素のパート 2 です。

要素のパート2の場合、クリックすると、コンソールに回数を与える関数(クラスを5回追加しました)..その理由は何ですか、どうすればそれを回避できますか..

ここに私の機能があります:

 var sv = [];
var userLocales = $('input[type="checkbox"]', "form").filter(function() {
    return $(this).val() === value["name"];
}).prop("checked", true).addClass("userLocales").on("change", function() {
    console.log($(this).prop("class"));
});
var plainLocales = $('input[type="checkbox"]', "form").filter(function() {
    return $(this).hasClass("userLocales") !== true;
}).on("change", function() {
    console.log("i am fresh"); //consoling 5 times..
});
4

1 に答える 1

2

次の例でこれが機能しています。問題が解決するかどうかを確認してください。

HTML の例:

<form>
   <input type="checkbox" name="checkbox1" value="Aus" />
   <input type="checkbox" name="checkbox2" value="US" />   
</form>

JS の例:

var serverValue  = { name: "US" };

var userLocales = $('input[type="checkbox"]', "form")
    .filter(function() {
        return $(this).val() === serverValue["name"];
    })
    .prop("checked", true)
    .addClass("userLocales").on("change", function() {
        console.log($(this).prop("class"));
    });

var plainLocales = $('input[type="checkbox"]', "form")
    .filter(function() {
        return $(this).hasClass("userLocales") !== true;
    })
    .on("change", function() {
        console.log("i am fresh");
    });

フィドルの例

于 2013-06-27T06:50:37.040 に答える