-2

私はそのような最初の要素を取得するセレクターを持っています:

$("#MyControl")[0]

配列のように要素にアクセスする以外の関数で要素を取得することはできますか?

私がやりたいことは、この要素を .call() で関数に渡してコンテキストを定義することです。

次に例を示します。

$(document).ready(function () {
    $(document).on("change", "#MyControl", setActivityControlsState);
});

setActivityControlsState: function () {
    var selector = "#automaticActivityCreation";

    if ($(selector).length > 0) {
        if ($.isNumeric(this.value) && this.value > 0)
            $(selector).show();
        else
            $(selector).hide();
    }
}

referenceFormOnSuccess: function (data) {
    setActivityControlsState.call($("#MyControl")[0]);
}

refreshFormOnSuccess 関数でわかるように、'this' を $("#MyControl")[0] で定義する必要があります。

それを行うためのより良い方法があるかどうかを知りたいだけです。

$(this).val() のようなものでコントロールの値にアクセスしたくないことに注意してください

4

1 に答える 1

3

その必要性を軽減する小さなリストラを提案してもいいですか。

$(document).ready(function () {
    $(document).on("change", "#MyControl", setActivityControlsState);
});

setActivityControlsState: function () {
    // cache jquery object instead of just the selector 
    // for better memory management
    var automaticActivityCreation = $("#automaticActivityCreation");

    if (automaticActivityCreation.length > 0) {
        if ($.isNumeric(this.value) && this.value > 0)
            automaticActivityCreation.show();
        else
            automaticActivityCreation.hide();
    }
}

referenceFormOnSuccess: function (data) {
    // fire the change event which will tap 
    // the listener you set up in .ready
    $("#MyControl").trigger('change'); 
}

しかし、本当にjqueryでオブジェクトを取得したい場合は、いくつかのオプションがあります。

// jQuery select #MyControl and get as dom element with array
$("#MyControl")[0]

// jQuery select #MyControl and get as dom element with .get
$("#MyControl").get(0)

ただし、IDを持つ要素を使用していて、一度に使用できるIDは1つだけなので、これにはjqueryは必要ありません。

document.getElementById('MyControl')

また

referenceFormOnSuccess: function (data) {
    setActivityControlsState.call(document.getElementById('MyControl'));
}
于 2012-08-10T20:43:04.610 に答える