触发点击的fancybox错误

IT技术 javascript jquery fancybox
2021-02-24 20:45:20

我必须在我的网站上运行带有触发器点击的fancybox ,我发现的问题是,使用这种方法,如果您单击花式框内的元素,花式框将关闭并再次出现(闪烁)。

我希望fancybox在我点击框内的元素时防止闪烁,当我点击这些元素时,我不想看到任何变化,仅此而已:)

我为这个问题创建了演示

http://jsfiddle.net/NhWLc/5/

<div id="a1">
  <p>Click on the box</p>
  <div class="r"></div>
</div>

$(document).ready(function() {
  $('#a1').fancybox({   
    afterClose: function() {
      console.log('closed :( ');
    }
  }).click();// or .trigger('click');
});

任何的想法?

4个回答

你的代码的问题是你让选择器#a1同时充当:fancybox触发器目标,因此任何点击本身都会一遍又一遍地触发fancybox。

您需要创建另一个以#a1元素为目标的选择器(触发器),例如

<a class="fancybox" href="#a1">triggers fancybox</a>
<div id="a1">
  <p>Click on the box</p>
  <div class="r"></div>
</div>

如果您不希望元素.fancybox可见,只需添加一个display:none属性

然后你的js

$(document).ready(function () {
    $('.fancybox').fancybox({
        afterClose: function () {
            console.log('closed :( ');
        }
    }).trigger('click');
});

JSFIDDLE

编辑:看着你的示例JSFIDDLE,事情本来可以简单得多。

只有这个 html

<div id="a1">
  <p>Click on the box</p>
  <div class="r"></div>
</div>

你可以使用这个代码

$(document).ready(function () {
    $.fancybox({
        href: "#a1"
    });
});

不需要click的地方。

更新JSFIDDLE

是的,我认为没有其他办法。我将您的代码修改为此,这在jsfiddle.net/LF27m/1 有效
2021-05-11 20:45:20

我不知道它会有所帮助或不只是试试这个,

$(document).ready(function(e)
{
e.preventDefault();   
            $('#a1').fancybox({ 
                afterClose: function()
                {
                    console.log('closed :( ');
                }
            }).click();// or .trigger('click');

});

使用下面的 html,添加id<div><a class="fancybox" rel="group" href="#r"><div id="r" class="r"></div></a>

<div id="a1">
    <p>Click on colors</p>
    <a class="fancybox" rel="group" href="#r"><div id="r" class="r"></div></a>
    <a class="fancybox" rel="group" href="#g"><div id="g" class="g"></div></a>
    <a class="fancybox" rel="group" href="#b"><div id="b" class="b"></div></a>
</div>

在这里检查

- - - - - - - - - - - 更新 - - - - - - - -

将 afterShow() 添加到您的 jquery

$('#a1').fancybox({ 
    afterClose: function()
            {
            console.log('closed :( ');
            },
            afterShow:function()
            {
                $('#a1').click(function(){return false;});
            }

        }).click();

再检查一遍

这是一个聪明的解决方案,但这将禁用框内的链接
2021-04-24 20:45:20
正如我之前所说的“我必须”用触发器('点击')打开花哨的盒子所以这不是我要找的答案
2021-05-14 20:45:20

我有一个无法点击的 Fancybox 覆盖的相同症状。我的客户希望能够链接并自动打开某个 Fancybox,例如http://yoursite.com/#signup以打开内联“注册”Fancybox 覆盖。感谢 JFK,我意识到我正在触发和定位 ID 为“signup”的元素,而不是带有“#signup”href 属性的元素。我让它挂钩到 URL 的最后一部分(即 #signup)并查找匹配的 'a' href 属性,并触发对该元素的点击。

下面的演示并不能真正帮助描述这一点,但您可以看到代码。

http://jsfiddle.net/ca7no4yp/2/

多汁的一点:

$("a[href='#" + location.href.substr(location.href.indexOf('#')+1) + "']").fancybox().trigger('click');