0

这是一个 javascript 将在 edit-panes-delivery-delivery-country 选项列表更改后运行,几个选项将附加到 $("select[id^='edit-panes-delivery-delivery-zone'] "),但是当 edit-panes-delivery-delivery-country 选项列表发生变化时也会运行 ajax,因此 ajax 操作将覆盖 javascript 的结果。

(function ($) {
  // Original JavaScript code.
    $('#edit-panes-delivery-delivery-country').ready (function() {
        $("#edit-panes-delivery-delivery-country").change(function() {
            if ($("#edit-panes-delivery-delivery-country option[value='156']").attr('selected')) {   

                var myOptions = {
                    949 : '福州 (hkpost only)',
                    951 : '廣州 (hkpost only)',               
                    952 : '昆明 (hkpost only)',
                    956 : '溫州 (hkpost only)',
                    957 : '廈門 (hkpost only)'

                };
                $.each(myOptions, function(val, text) {
                    //alert("added");
                    $("select[id^='edit-panes-delivery-delivery-zone']").append( new Option(text,val) );


                })
            }
        })
    })
})(jQuery);

所以,我的问题是,是否可以延迟 jquery 运行例如几秒钟?

附言。该脚本在drupal 7模块中运行,因为我不知道drupal 7中的alter ajax动作,所以我选择延迟jquery运行

4

2 回答 2

0

将您的代码移动到一个单独的 JS 函数中,并在 jQuery 代码中使用 setTimeout 调用它,替换 alert("Hello")。此示例中的计时器为 3,000 毫秒,即 3 秒。

setTimeout(yourFunctionNamehere,3000);
于 2013-02-19T02:39:11.050 回答
0

试试这个:

$("#edit-panes-delivery-delivery-country").change(function() {
    setTimeout(myHandler, 5000);
});

function myHandler(){
    // do everything here
}
于 2013-02-19T02:39:58.087 回答