首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery onchange

Jquery onchange
EN

Stack Overflow用户
提问于 2016-10-10 07:15:01
回答 1查看 10.5K关注 0票数 1

我创建了一个将数据( ajax )发送到数据库的函数,根据服务器的响应,我需要通知一条消息,但似乎每当我更改select选项时,我就会得到每次更改的警告消息(如果我单击4次更改select,我就会收到4次警报),但是如果我删除ajax函数并将其替换为一个警报,我就会得到它一次又一次没有重复--这里是我的JS

代码语言:javascript
复制
        $('.select_ids').change(function () {
            var id = $(this).val();
            var form = $('#form_widget_ids_' + id);
            var container = form.parent('.ewb_forms');
            var box = container.parent('.edit_widget_box');

            container.children('.selected').fadeOut(300, function () {
                $(this).removeClass('selected');
                form.fadeIn(300, function () {
                    $(this).addClass('selected');
                });
            });
            Widget.updateSSOUrl(box);

            $.ajax({
                type: "POST",
                url: window.location + "",
                data: {'id': id}

            }).done(function (msg) {

                $(".red").on('click', function (evt) {
                    if ('done' == msg) {
                        evt.preventDefault();
                        alert('NOP');
                    }
                })



            });
        });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 07:20:56

我认为你绑定的事件是错误的。对于新附加的项,在您的情况下最好使用

代码语言:javascript
复制
$(document).on('click', ".red", function (evt) {

                })

它必须移到ajax成功之外,因为现在您每次都会触发它。

-编辑的-如果您只想提醒ajax的输出,则不需要onClick事件。

代码语言:javascript
复制
$('.select_ids').change(function () {
            var id = $(this).val();
            var form = $('#form_widget_ids_' + id);
            var container = form.parent('.ewb_forms');
            var box = container.parent('.edit_widget_box');

            container.children('.selected').fadeOut(300, function () {
                $(this).removeClass('selected');
                form.fadeIn(300, function () {
                    $(this).addClass('selected');
                });
            });
            Widget.updateSSOUrl(box);

            $.ajax({
                type: "POST",
                url: window.location + "",
                data: {'id': id}

            }).done(function (msg) {
                    if (msg === 'done') {
                        evt.preventDefault();
                        alert('NOP');
                    }
            });
        });

如果要在单击按钮上显示最新结果,可以将msg存储在全局变量上,单击div显示如下

代码语言:javascript
复制
var globalMsg = "";
$('.select_ids').change(function () {
            var id = $(this).val();
            var form = $('#form_widget_ids_' + id);
            var container = form.parent('.ewb_forms');
            var box = container.parent('.edit_widget_box');

            container.children('.selected').fadeOut(300, function () {
                $(this).removeClass('selected');
                form.fadeIn(300, function () {
                    $(this).addClass('selected');
                });
            });
            Widget.updateSSOUrl(box);

            $.ajax({
                type: "POST",
                url: window.location + "",
                data: {'id': id}

            }).done(function (msg) {
              globalMsg = msg
            });
        });

$(".div").click(function() { alert(globalMSG); });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39953001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档