Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用jQuery将多个单击事件附加到元素吗?_Jquery - Fatal编程技术网

我可以使用jQuery将多个单击事件附加到元素吗?

我可以使用jQuery将多个单击事件附加到元素吗?,jquery,Jquery,我在插件脚本中包含以下内容: $("#menu") .on('click','a[href^="/Test"]',function(event){ event.preventDefault(); var href = $(this).attr('href'); alert(this); // Load content $('#content').load(href, '', function (responseT

我在插件脚本中包含以下内容:

$("#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');
            }
        }
    });       

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

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

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

如果使用,您是否有相同的问题


如Q上的注释所述,如果任何函数返回一个
false
,它将防止事件冒泡。

只需将其保留在一键事件中,将其分为两个是冗余的

第一个函数的其余部分是相关的,特别是如果它是
返回false
…我添加了函数的其余部分。没有返回错误。我想知道有两个事件是否可以;为什么需要2次点击事件?它与您附加到它们的元素相同,所以只需将您的代码组合在一起,使其成为一个event@Tom我以前曾使用过多次单击事件,例如,在构建复杂表单时,可能存在或不存在某些元素。每个依赖于单击的元素都可以根据需要注册/取消注册自己的处理程序-更易于维护,更感谢大家迄今为止的帮助。现在每个人都告诉我它应该可以正常工作了,我会试着调查到底出了什么问题。
$("#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);
            });