jQuery事件触发器

jQuery事件触发器,jquery,events,triggers,Jquery,Events,Triggers,我有一个带有onchange侦听器的选择框。当人类使用它时,它的功能是100% 我已经添加了一个带有jQueryUI的模态对话框,以便在所述列表中创建一个新选项。 这也100%有效 然而,在将上述新选项添加到列表中时,我试图“伪造”要触发的更改事件,以便用户不必这样做。它似乎从不着火 我可以像这样使用触发器吗 //##### ADDC ####// $( "#add" ).click(function(){ $( "#addform" ).dialog({ autoOpe

我有一个带有onchange侦听器的选择框。当人类使用它时,它的功能是100%

我已经添加了一个带有jQueryUI的模态对话框,以便在所述列表中创建一个新选项。 这也100%有效

然而,在将上述新选项添加到列表中时,我试图“伪造”要触发的更改事件,以便用户不必这样做。它似乎从不着火

我可以像这样使用触发器吗

//##### ADDC ####//
$( "#add" ).click(function(){
    $( "#addform" ).dialog({
        autoOpen: true,
        height: 200,
        width: 350,
        modal: true,
        buttons: {
            "Add": function() { 
                var f = $('#folder').val();
                var request = $.ajax({  
                    url: "process.it"
                    ,  type: "POST"
                    ,  data: {  f  : f   }
                });                 
                request.done(function(msg) {
                    $("#version").append( $('<option></option>').val(msg).html(msg) ).val(msg);
                    $("#version").focus();
                });
                $( this ).dialog( "close" );    
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        },
        close: function() {
            $('#version').trigger('change');
        }
    }); 
    return false; 
});



//###### CHANGE ###############
$('#version').change(function() {       
    var promise = getFolders(mypath);
    promise.success(function (data) {
        promise.done(function(msg) {        
            if(msg=="false"){
                //error check   
            } else {
                var myOptions = msg.split(",");
                var mySelect = $('#version');

                mySelect
                    .find('option')
                    .remove()
                    .end();
                $.each(myOptions, function(x,y) {
                    if(x==0){
                        x=-1;
                        y="Select Version";
                        mySelect.append($('<option></option>').val(x).html(y));
                    }
                    else {      
                        mySelect.append($('<option></option>').val(y).html(y));
                    }
                }); 
                mySelect.focus();
            }
        });
    });     
});
html看起来像

  <select id="version"></select>  <a href="#" id="add">
当模态关闭或其他位置时,我希望它启动onchange以有效地从源代码中重新提取promise ajax查找,函数未在此处列出。。。而不是它现在所做的,即简单地将选项附加到列表并选择它

我在一个可能的地方尝试了这个触发代码块,但它仍然无法启动


那么,我如何从系统中伪造onchange呢?我使用的是jQuery和UI的现代版本,可能是1点发布版

我认为您在服务器响应之前触发了更改。如果要在之后触发更改,请让add方法关闭“done”函数中的对话框

 buttons: {
        "Add": function() { 
            var f = $('#folder').val();
            var request = $.ajax({  
                url: "process.it"
                ,  type: "POST"
                ,  data: {  f  : f   }
            });                 
            request.done(function(msg) {
                $("#version").append( $('<option></option>').val(msg).html(msg) ).val(msg);
                $("#version").focus();
                $( this ).dialog( "close" );  
            });

        },

下面是一个示例-

您是否试图在请求完成后触发更改?是的,添加新选项后,我希望更改事件为fire.yup。我有一个“比赛条件”,在我有它的地方添加了一个警报,也允许它显示。把它移到“已完成”位置就成功了。谢谢
 buttons: {
        "Add": function() { 
            var f = $('#folder').val();
            var request = $.ajax({  
                url: "process.it"
                ,  type: "POST"
                ,  data: {  f  : f   }
            });                 
            request.done(function(msg) {
                $("#version").append( $('<option></option>').val(msg).html(msg) ).val(msg);
                $("#version").focus();
                $( this ).dialog( "close" );  
            });

        },