1

全部。

我知道这相对简单,但我对 javascript 的经验不足。背景是我正在尝试在同一页面上将 SimpleModal 与单独的模式一起使用。之前已经解释过这种事情(http://code.google.com/p/simplemodal/issues/detail?id=32),但是我对this.id的理解不够好,代码也不是在职的。

我认为我的术语在这里甚至不正确,但是选择器没有正确检索我的链接想法并使用“#osx_”字符串对其进行解析。我在使用警报后(字面意思是几小时后)意识到了这一点。

$('a.osx').click(function () {
$('#osx_' + this.id).modal();
});

我知道我的 HTML 设置正确,如果我将“#osx_newsletter”硬编码到两个位置,它就可以正常工作。这显然会杀死我需要的动态 id。

这是代码。有人可以让我知道我在这里做错了什么吗?我将不胜感激!谢谢!

/*
 * SimpleModal OSX Style Modal Dialog
 * http://simplemodal.com
 *
 * Copyright (c) 2013 Eric Martin - http://ericmmartin.com
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 */

jQuery(function ($) {
    var OSX = {
        container: null,
        init: function () {
            $("a.osx").click(function (e) {
                e.preventDefault(); 
alert('#osx_'+$(this).attr('id'));
                $('#osx_' + 'donate').modal({
                    overlayId: 'osx-overlay',
                    containerId: 'osx-container',
                    closeHTML: null,
                    minHeight: 80,
                    opacity: 65, 
                    position: ['0',],
                    overlayClose: true,
                    onOpen: OSX.open,
                    onClose: OSX.close
                });
            });
        },
        open: function (d) {
            var self = this;
            self.container = d.container[0];
            d.overlay.fadeIn('slow', function () {
                $('#osx_' + 'donate', self.container).show();
                var title = $("#osx-modal-title", self.container);
                title.show();
                d.container.slideDown('slow', function () {
                    setTimeout(function () {
                        var h = $("#osx-modal-data", self.container).height()
                            + title.height()
                            + 20; // padding
                        d.container.animate(
                            {height: h}, 
                            200,
                            function () {
                                $("div.close", self.container).show();
                                $("#osx-modal-data", self.container).show();
                            }
                        );
                    }, 300);
                });
            })
        },
        close: function (d) {
            var self = this; // this = SimpleModal object
            d.container.animate(
                {top:"-" + (d.container.height() + 20)},
                500,
                function () {
                    self.close(); // or $.modal.close();
                }
            );
        }
    };

    OSX.init();

});
4

1 回答 1

0

你可以这样尝试:

$('a.osx').click(function () {
    $('[id="osx_' + this.id+'"]').modal();
});
于 2013-01-30T10:30:57.657 回答