jquery simplemodal не может вызвать другую функцию - PullRequest
1 голос
/ 16 ноября 2010

В моем модальном окне есть кнопка «Продолжить». Хотя я могу заставить модал закрыться, назначив кнопку с помощью класса simplemodal-close, я не могу заставить его вызывать мою функцию. Я собрал этот код из простых демонстраций на сайте.

Кнопка:

<a href="#" class="simplemodal-close" onClick="closePopup()"><img src="bell/images/button_understand.gif" width="116" height="49"></a>

JavaScript:

$(document).ready(function() {
    function showPopups(){
        var e = document.getElementById('hirpopup');
        $('#hirpopup').modal({
        opacity:80,
        overlayCss: {backgroundColor:"#fff"}
        });
    e.style.display = 'block';
    return false;
    }

    function closePopup(){
        var e = document.getElementById('hirpopup');
        e.style.display = 'none';

        confirm(function () {
        sameWindow(this.form);
        });
    }

    function confirm(callback) {
        $('#hirpopup').modal({
            onShow: function () {
                var modal = this;
                // call the callback
                if ($.isFunction(callback)) {
                    callback.apply();
                }
            }
        });
    }
});

Любые идеи, поскольку я довольно новичок в jQuery и совершенно новичок в simplemodal.

РЕДАКТИРОВАТЬ: я обновил свой JavaScript следующим образом, но он по-прежнему не выполняет мою функцию. Я получаю предупреждение 1, и предупреждение с функцией в нем, но ничего больше.

$(document).ready(function(){
    $("#close").css("cursor", "pointer"); 

    $('#next').click(function(){
        var e = document.getElementById('hirpopup');
        $('#hirpopup').modal({
            opacity:80,
            overlayCss: {backgroundColor:"#fff"}
        });
        e.style.display = 'block';
        return false;
    });

    $('#close').click(function(){
        var e = document.getElementById('hirpopup');
        e.style.display = 'none';

        confirm(function () {
            sameWindow(this.form);
        });
    });
});


function confirm(callback) {
alert("1");
alert(callback);
    $('#hirpopup').modal({
        onShow: function () {
            alert("2");
            var modal = this;
            // call the callback
            if ($.isFunction(callback)) {
                alert("3");
                callback.apply();
            }
        }
    });
}

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

РЕДАКТИРОВАТЬ: вы можете попытаться поместить метод подтверждения в document.ready. Это может быть одна проблема

Вы не можете иметь $ (document) .ready внутри своей собственной функции, но это должен быть корневой метод. Используйте также привязку события jQuery

    $(document).ready(function() {

$('.simplemodal-close').click({

        var e = document.getElementById('hirpopup');
        e.style.display = 'none';

        confirm(function () {
            sameWindow(this.form);
        });

});

});

0 голосов
/ 16 ноября 2010

Вы не можете иметь $(document).ready(function(){}) внутри своей функции.Он запускается автоматически только один раз, когда ваша страница загружается.

вместо записи

function closePopup(){

        var e = document.getElementById('hirpopup');
        e.style.display = 'none';

        confirm(function () {
            sameWindow(this.form);
        });

}
...