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');
            }
        }
    });       

我还想在用户点击时设置链接的值。我在我的页面上添加了这个,但它似乎没有被调用。当我将两个相同类型的事件附加到一个元素时会出现问题吗?

$("#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

是的,它应该工作。确保定义第二个处理程序的代码实际上正在执行。

或者,您始终可以修改您附加的第一个处理程序以调用您的(多个)其他函数。

就我个人而言,我更喜欢让前者工作,因为它允许您独立地附加/分离处理程序。

如果您使用Bind是否有同样的问题?

正如 Q 的评论中提到的,如果任何函数返回 a false,它将阻止事件冒泡。

于 2012-05-23T16:24:19.877 回答
0

只需将其保留在单击事件中,将其分为两个是多余的

于 2012-05-23T16:27:21.807 回答