【问题标题】:Button click execute 2 times on modal jquery按钮单击在模态 jquery 上执行 2 次
【发布时间】:2016-10-28 00:13:39
【问题描述】:

我不明白为什么按钮单击事件会触发 2 次......我在物化 css 上绘制 2 张卡片......当我按下按钮时,它会检查客户端会话是否已启动,然后执行一些东西......否则它会打开一个模式。但是点击必须只触发 1 次,我得到 2 次警报(“chango”),点击 1 次...帮助 PLS !!,这里是代码:

function list_section(data) {
    var p = JSON.parse(data); // 2 results
    $.each(p, function(i, item) {
    if (item.SECTION_ID == 1) {
        $("#president").append(
            '<div class="col s6">' +
            '\<div class="card medium sticky-action" id="president_'+item.POLITIC_ID+'">' +
            '<div class="card-image waves-effect waves-block waves-light">' +
            '<div class="video-container">' +
            '  <iframe src="' + baseurl + 'public/uploads/' + item.POLITIC_FILE + '" frameborder="0" allowfullscreen controls></iframe>' +
            '</div>' +
            '</div>' +
            '<div class="card-action">' +
            '<span class="card-title activator grey-text text-darken-4">' + item.POLITIC_NAME + '&nbsp' + item.POLITIC_LASTNAME + '<i class="material-icons right">more_vert</i></span>' +
            '<div class="row" style="margin-top:10px;margin-bottom:0px;">' +
            '<div class="col s3">' +
            '<button class=" btn waves-effect modal-trigger waves-light red darken-3 disapprove disapprove_president"  data-target="verification" type="submit" name="action"  ">Desapruebo</button>' +
            '</div>' +
            '<div class="col s3 offset-s4">' +
            '<button class=" btn waves-effect modal-trigger waves-light light-green darken-3 aprove aprove_president" data-target="verification" type="submit" name="action" ">Apruebo</button>' +
             '</div>' +
             '</div>' +
             '</div>' +
             '<div class="card-reveal">' +
             '<span class="card-title grey-text text-darken-4">' + item.POLITIC_NAME + '&nbsp' + item.POLITIC_LASTNAME + '<i class="material-icons right">close</i></span>' +
             '<p>Here is some more information about this product that is only revealed once clicked on.</p>' +
             '</div>' +
             '</div>' +
             '<input type="hidden" id="' + item.POLITIC_ID + '">' +
             '</div>'
        );
        $(document).on('click', '.aprove , .disapprove', function() {
            // $(".aprove , .disapprove").unbind("click");
            //  $(".aprove , .disapprove").on("click", selectKeepFirstOfAll);
            if (sesion != "") {
                if ($(this).attr('class').split(' ').pop() == 'aprove_president') {
                    alert("chango");
                    var data = {}
                    $.ajax({
                        url: baseurl+'result/aprove',
                        type: 'POST',
                        data: data
                    })
                    .done(function() {
                        console.log("success");
                    })
                    .fail(function() {
                        console.log("error");
                    })
                    .always(function() {
                        console.log("complete");
                    });
                }
                else if ($(this).attr('class').split(' ').pop() == 'disapprove_president') {
                }
            }
            else {
                $('#verification').openModal();
            }
        });
    }

【问题讨论】:

    标签: jquery modal-dialog click materialize


    【解决方案1】:

    $(document).on('click'...) 移到list_section 函数之外(使其成为全局)。您正在为您处理的每个部分添加一个 onclick 处理程序。

    【讨论】:

    • 好的,但我需要 item.POLITIC_ID ...用于 ajax 请求 =(
    • 你已经拥有了。您可以这样做:$(this).closest("div.col.s6").find('input[type=hidden]').last().attr('id')(在输入中添加“politic_id”类以使选择器更简单)
    • @Ragnar 在您添加点击处理程序时引用数据无论如何都是一个坏主意,无论您按什么按钮,它都会保留该引用并发送一组数据。目前,它会在您每次按下任何按钮时调用所有处理程序 - 但即使您修复了该问题,您也无法将数据硬编码到处理程序中。您将不得不将数据存储在 JavaScript 中的某个位置,或者从 HTML 中读取数据
    猜你喜欢
    • 2020-10-28
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2022-08-08
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多