Javascript Jquery On(”Click“)互相链接的钩子

Javascript Jquery On(”Click“)互相链接的钩子,javascript,jquery,html,Javascript,Jquery,Html,嗨,我有两个Jquery函数。一个函数用于哈希滚动,另一个函数用于单击时显示模式。这些函数与链接挂钩。我用href=“#”设置了空链接。然而,我的两个钩子相互干扰。如果我在第一个函数中检查空的hashlinks,并返回false,则gallery中显示图像模式的第二个函数将被禁用。这有什么办法吗。我确信最明显的答案是给我的函数添加一些变量。但是我想做一个函数,它将检查href=“#”是否为true,并且不会滚动,但不会干扰Jquery可能连接到该链接的任何其他函数。为什么这两个钩子会相互干扰呢

嗨,我有两个Jquery函数。一个函数用于哈希滚动,另一个函数用于单击时显示模式。这些函数与链接挂钩。我用
href=“#”
设置了空链接。然而,我的两个钩子相互干扰。如果我在第一个函数中检查空的
hashlinks
,并返回false,则gallery中显示图像模式的第二个函数将被禁用。这有什么办法吗。我确信最明显的答案是给我的函数添加一些变量。但是我想做一个函数,它将检查
href=“#”
是否为true,并且不会滚动,但不会干扰Jquery可能连接到该链接的任何其他函数。为什么这两个钩子会相互干扰呢

    <div><a href="/#somelinkonpage">Some text</a><div>
    <div id="gallery>
    <div class="item">
    <a class="thumbnail thumbnail-sm" href="#" rel="tooltip">
        <img src="...jpg" class="img-rounded">
    </a>
    </div>
    <div>

    //smooth scroll hashes function.
    ('a[href*=#]').on('click', function () {
                    var href = $.attr(this, 'href');
                    href = href.replace(/^\//, '');
                    if (href == '#') {
                        return false;// but if I return false here modal does not work.
                    }
                    else { //smooth scroll code here }
                    return false;// if I return false here my modal function works.
                });
    //Display gallery item in modal function.
    $('#gallery').on('click', '.item a', function () {
                    $('#myModal').modal('show');
                    return false;
                });

这可能是因为第二种情况使用了事件委派,所以当第一个事件被取消时,委派不会出现气泡。试试这个:

 $('#gallery .item a').on('click', function () {
     alert("hhh");
     $('#myModal').modal('show');
     return false;
 });

希望这有帮助。干杯你试过这样的东西吗

('a[href*=#]').on('click', function () {
    var href = $.attr(this, 'href');
    href = href.replace(/^\//, '');
    if (href != '#') {
        //smooth scroll code here
    }
    return false;
});

当您从事件处理程序返回
false
时,它会阻止
元素的默认操作,但也会停止事件的传播——这意味着不会执行其他附加的事件处理程序。如果希望平滑滚动跳转链接的事件处理程序允许这些链接上的其他事件处理程序执行,则应阻止默认操作,但仍允许事件传播。您可以通过调用
event.preventDefault()
而不是返回
false
来实现这一点

按如下方式启动事件处理程序:

$('a[href*=#]').on('click', function (event) {
    event.preventDefault();
    ...
以及:


并且不要从他们那里返回
false

我试过了,但没有效果。我想我会选择event.preventdefault();
$('a[href*=#]').on('click', function (event) {
    event.preventDefault();
    ...
$('#gallery').on('click', '.item a', function (event) {
    event.preventDefault();
    ...