Javascript 如何避免在Jquery中选择项时更改事件?

Javascript 如何避免在Jquery中选择项时更改事件?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在创建选择以从DB中选择数据,但为选择器设置ID=myselect 但是,如果我选择了一个项目并更改为另一个项目,当用户单击它的项目时,我只想调用ajax一次,这个ajax就会调用 $(document).on("click", "#myselect", function (e) { $.ajax({ url: '/teller/assignTo', dataType: 'json', Method: 'get', s

我正在创建选择以从DB中选择数据,但为选择器设置ID=myselect

但是,如果我选择了一个项目并更改为另一个项目,当用户单击它的项目时,我只想调用ajax一次,这个ajax就会调用

$(document).on("click", "#myselect", function (e) {

    $.ajax({
        url: '/teller/assignTo',
        dataType: 'json',
        Method: 'get',
        success: function (data, status) {

            var userId = data.users;
            $.each(userId, function (key, value) {
                $('#myselect').append($("<option></option>").attr("value", key).text(value.name));
            });
        },
        error: function () {
            throw new Error("Could not load  " + data);
        }
    });
});
HTML

试试这个

HTML

JQuery

$(document).on("click", "#myselect", function (e) {
    if( $(this).hasClass( "not-clicked" ) ) {
        $.ajax({
            url: '/teller/assignTo',
            dataType: 'json',
            Method: 'get',
            success: function (data, status) {    
                var userId = data.users;
                $.each(userId, function (key, value) {
                    $('#myselect').append($("<option></option>").attr("value", key).text(value.name));
                });
            },
            error: function () {
                throw new Error("Could not load  " + data);
            }
        });
        $(this).removeClass("not-clicked");
    }
});

您可以使用$document.one代替$document.on。。将只执行一次$document.onchange、myselect和函数e{//使用change event而不是clickIt无法工作,因为我第一次在选择中有一个值。@anshu,如果您使用了一个值,并且如果第一次加载失败,它将无法选择。哦,我从另一个jquery追加了这个选择,所以我必须使用$document.on;如果我使用$selector.on它将无法工作如果ajax加载失败,我必须插入check再次使用d类,对吗?这对性能有好处,或者不只是在成功功能中移动“$this.removeClassnot clicked;”。当我在ajax中更改已删除的类时,它无法删除该类
<select name="assign_user_id" id="myselect" class="form-control not-clicked" ></select>
$(document).on("click", "#myselect", function (e) {
    if( $(this).hasClass( "not-clicked" ) ) {
        $.ajax({
            url: '/teller/assignTo',
            dataType: 'json',
            Method: 'get',
            success: function (data, status) {    
                var userId = data.users;
                $.each(userId, function (key, value) {
                    $('#myselect').append($("<option></option>").attr("value", key).text(value.name));
                });
            },
            error: function () {
                throw new Error("Could not load  " + data);
            }
        });
        $(this).removeClass("not-clicked");
    }
});