5

インプレース編集にはJeditableを使用しています。私が使用しているコントロールにはselectタイプがあります。ユーザーがフィールドをクリックすると、次のselectコントロールが生成されます。

<div id="status" class="editable_select">
    <form>
        <select name="value">
            <option value="Active">Active</option>
            <option value="Inactive">Inactive</option>
        </select>
        <button type="submit">Save</button>
        <button type="cancel">Cancel</button>
    </form>
</div>

私が理解しようとしているselectのは、特にID属性がないため、jQueryを使用してそのコントロールがいつ変更されたかを検出する方法です。

これは私がこれまでに持っているものですが、イベントはトリガーされていません:

$(document).ready(function () {
    $('#status select').change(function () {
        alert("Change Event Triggered On:" + $(this).attr("value"));
    });
});

アップデート

jQuery 1.4.2 に更新すると、Matt のソリューションを使用して問題が解決しました。

4

1 に答える 1

8

ページがロードされた後 (およびイベントバインディングが行われた後) に選択フィールドがページに追加されているため、おそらくそれが見つかるでしょう。

その場合でも、ライブを使用して変更イベントをキャプチャできます

$(document).ready(function () {
    $('#status select').live('change', function () {
        alert("Change Event Triggered On:" + $(this).attr("value"));
    });
});

ただし、1.7 以降では、on()メソッドはイベント ハンドラーをバインドするための推奨される方法であることに注意してください。上記と同等のものは次のとおりです。

$(document).ready(function () {
    $(document).on('change', '#status select', function () {
        alert("Change Event Triggered On:" + $(this).attr("value"));
    });
});
于 2010-03-29T21:22:22.167 に答える