2

プラグインスクリプトには次のものがあります。

$("#menu")
.on('click','a[href^="/Test"]',function(event){

        event.preventDefault();
        var href = $(this).attr('href');

        alert(this);
        // Load content
        $('#content').load(href, '', function (responseText, textStatus, XMLHttpRequest) {
            $(this).applyTemplateSetup().buildTableOfContent();
        });
        window.location.hash = '#' + href;

        // Get nav link
        var a = $('#menu a[href="' + href + '"]');
        if (a.length > 0) {
            // Mark as current
            $('#menu a').removeClass('current');
            a.addClass('current');

            // Update breadcrumb
            var breadcrumb = $('#breadcrumb').empty();
            while (a.length > 0) {
                if (a.get(0).nodeName.toUpperCase() == 'A') {
                    var target = a;
                }
                else {
                    var target = a.parent().find('a:first');
                }
                breadcrumb.prepend('<li><a href="' + target.attr('href') + '">' +
                a.contents().filter(function () {
                    return this.nodeType == 3;
                }).first().text()
                + '</a></li>');

                // Check if opened
                var li = a.parent();
                if (li.hasClass('closed')) {
                    li.removeClass('closed');
                }

                a = li.parent().parent().children('a, span');
            }
        }
    });       

ユーザーがクリックしたときのリンクの値も設定したいと思います。これを自分のページに追加しましたが、呼び出されないようです。同じタイプのイベントを2つ要素にアタッチすると、問題が発生しますか?

$("#menu")
            .on('click', 'a[href^="/Test"]', function (event) {
                event.preventDefault();
                var href = $(this).attr('href');
                var pk = href.substr(7, 4);
                var rk = href.substr(12, 4);
                var link = "/Admin/Testss/Edit?pk=" + pk + "&rk=" + rk;
                $('#editLink').data('href', link);
            });
4

2 に答える 2

1

はい、動作するはずです。2番目のハンドラーを定義するコードが実際に実行されていることを確認してください。

または、アタッチする最初のハンドラーをいつでも変更して、(複数の)他の関数を呼び出すこともできます。

個人的には、ハンドラーを独立してアタッチ/デタッチできるので、前者を機能させたいと思います。

バインドを使用する場合も同じ問題がありますか?

Qのコメントで述べたように、関数のいずれかがafalseを返す場合、イベントのバブリングを防ぎます。

于 2012-05-23T16:24:19.877 に答える
0

ワンクリックイベントでそれを保持するだけで、2つでそれを持っていることは冗長です

于 2012-05-23T16:27:21.807 に答える