1

asp.net 4.0 アプリにモーダル ウィンドウを追加しようとしています。現在、モーダル ウィンドウはアンカー クリックで開きます。ボタン クリックで開きたいと思います。

ボタンのクリックで起動するようにjqueryセレクターを変更する必要があるように見えましたが、それは機能していないようです。

すなわち。$(":button").live("click", function (e) { ボタンのクリックで起動する必要があります

リンクを起動する作業コードを以下に示します。

マークアップ:

<a href="#" data-reveal-id="myModal">
    Add User
</a>

JQuery ファイル:

(function ($) {
$("a[data-reveal-id]").live("click", function (e) {
    e.preventDefault();
    var modalLocation = $(this).attr("data-reveal-id");
    $("#" + modalLocation).reveal($(this).data())
});
$.fn.reveal = function (options) {
    var defaults = { animation: "fadeAndPop", animationspeed: 300, closeonbackgroundclick: true, dismissmodalclass: "close-reveal-modal" };
    var options = $.extend({}, defaults, options); return this.each(function () {
        var modal = $(this), topMeasure = parseInt(modal.css("top")),topOffset = modal.height() + topMeasure, locked = false, modalBG = $(".reveal-modal-bg");
        if (modalBG.length == 0) { modalBG = $('<div class="reveal-modal-bg" />').insertAfter(modal) } modal.bind("reveal:open", function () {
            modalBG.unbind("click.modalEvent");
            $("." + options.dismissmodalclass).unbind("click.modalEvent");
            if (!locked) {
                lockModal();
                if (options.animation == "fadeAndPop") {
                    modal.css({ top: $(document).scrollTop() - topOffset, opacity: 0, visibility: "visible" });
                    modalBG.fadeIn(options.animationspeed / 2);
                    modal.delay(options.animationspeed / 2).animate({ top: $(document).scrollTop() + topMeasure + "px",opacity: 1},options.animationspeed, unlockModal())
                }
                if (options.animation == "fade") {
                    modal.css({ opacity: 0, visibility: "visible", top: $(document).scrollTop() + topMeasure });
                    modalBG.fadeIn(options.animationspeed / 2);
                    modal.delay(options.animationspeed / 2).animate({ opacity: 1 }, options.animationspeed, unlockModal())
                }
                if (options.animation == "none") {
                    modal.css({ visibility: "visible", top: $(document).scrollTop() + topMeasure });
                    modalBG.css({ display: "block" });
                    unlockModal()
                }
            } modal.unbind("reveal:open")
        });
            modal.bind("reveal:close", function () {
            if (!locked) {
                lockModal();
                if (options.animation == "fadeAndPop") {
                    modalBG.delay(options.animationspeed).fadeOut(options.animationspeed);
                    modal.animate({ top: $(document).scrollTop() - topOffset + "px", opacity: 0 }, options.animationspeed / 2, function () {
                        modal.css({ top: topMeasure, opacity: 1, visibility: "hidden" });
                        unlockModal()
                    })
                }
                if (options.animation == "fade") {
                    modalBG.delay(options.animationspeed).fadeOut(options.animationspeed);
                    modal.animate({ opacity: 0 }, options.animationspeed, function () { modal.css({ opacity: 1, visibility: "hidden", top: topMeasure }); unlockModal() })
                }
                if (options.animation == "none") {
                    modal.css({ visibility: "hidden", top: topMeasure });
                    modalBG.css({ display: "none" })
                } 
            } modal.unbind("reveal:close")
        });
        modal.trigger("reveal:open");
        var closeButton = $("." + options.dismissmodalclass).bind("click.modalEvent", function () { modal.trigger("reveal:close") });
        if (options.closeonbackgroundclick) {
            modalBG.css({ cursor: "pointer" });
            modalBG.bind("click.modalEvent", function () { modal.trigger("reveal:close") })
        }
        $("body").keyup(function (e) {
        if(e.which===27){modal.trigger("reveal:close")}});
        function unlockModal(){locked=false}function lockModal(){locked=true}})}})(jQuery);
4

1 に答える 1

0

有効な CSS を使用した $(":button") と同等のセレクターは $("button, input[type='button']") です。

-jquery.com より

<input type="submit">タグを使用していますか?その場合、:button セレクターによって選択されません。

代わりにこれを試してください:

 $("button, input[type='button'], input[type='submit']")
     .live("click", function (e) { }

考えてみれば、あなたはサブミットタグを使っていないかもしれません。

于 2012-09-06T18:16:06.163 に答える