4

我从绑定到表行的单击事件中调用 jquery.fancybox 链接。该操作第一次运行良好,但是,如果我关闭fancybox 并再次单击任何行,绑定到该行的匿名函数仍然会触发,但fancybox 不会启动。这是我正在使用的javascript:

$jq(document).ready(function() {

  $jq('a.edit').fancybox({
    'overlayShow': true,
    'hideOnContentClick': false
  });

  $jq('tr').click(function() {
    alert("clicked");
    $jq(this).find('a.edit').trigger("click");
  });

});

因此,然后在 HTML 中,我将锚点归类为“编辑”:

<tr>
  <td>...</td>
  <td>
    <a href="/candidates/22/qualifications/16/edit" class="edit">edit</a>
  </td>
</tr>

我总是可以看到警报框,我可以将触发器/click() 调用更改为 remove(),它会“工作”,在多个场合移除锚点。我也可以反复手动单击 $('.edit') 链接本身,一切都很好。

那么,当从行点击事件中依次出现时,锚点击事件是如何只触发一次的呢?这与我在描述函数时对 $(this) 的调用有关吗?

4

7 回答 7

4

试一试:

$jq('a.edit').live('click',function(){
    $.fancybox('<div>Here is the content</div>'{
        overlayShow: true,
        hideOnContentClick: false
    });

    return false;
});

或者,您可以这样做:

 $jq('a.edit').live('click',function(){
    $.fancybox({
        href: 'some-page.html'
        overlayShow: true,
        hideOnContentClick: false
    });

    return false;
});

希望有帮助!

于 2011-06-11T01:55:11.877 回答
0

试试这个来调试

$jq('tr').click(function() {
    // Step 1: make sure the following expression is actually returning elements
    var elements = $jq(this).find('a.edit');

    if ( elements.length ) {
        // Step 2: Just use the `click` method to trigger the event
        alert("Found " + elements.length + "elements");
        elements.click();
    } else {
        alert("No elements found");
    }
});

如果一切正常,那么您可以将其简化为

$jq('tr').click(function() {
    $jq(this).find('a.edit').click();
});
于 2010-01-10T21:12:05.933 回答
0

我的猜测是,fancybox 试图在没有点击事件的情况下显示。在fancybox 显示之后,您在fancybox 外部触发点击,在它有机会显示之前将其关闭。将fancybox链接放在表格之外,然后当点击tr时,触发anchor click,这将弹出打开fancy box。

如果此问题仍然存在,您可能需要在 fancybox 库中抛出一些调试语句来跟踪问题。

于 2010-01-16T01:35:11.210 回答
0

Tuffkid 让它工作了;我也在努力解决这个问题,我得出了与他相同的结论;无论如何,只是分享。

负载:

$(document).ready(function(){
    $('#show').click(function(e){
        showPopUp($(this));
    });
});

JS功能:

function showPopUp(obj){
    obj.fancybox({      
        'href' : 'page.php',
        'onCleanup': function(){
             $(this).click(function(e) { showPopUp($(this)); });
    }
            });
}
于 2011-06-02T10:30:29.547 回答
0

jquery fancybox 触发器只工作一次..

通常我们是这样使用 $(".fancybox").trigger('click'); 但它不能正常工作。

像这样改变你的跳跳虎......它对我有用......

 $(".fancybox").fancybox().trigger('click');

在这里首先找到fancybox然后触发它

于 2014-06-05T11:17:29.613 回答
0

你解决了这个问题吗?如果没有,有一个棘手的方法来解决这个问题。我认为当你打开一次并关闭盒子时,'trigger()' 方法将被解除绑定。我在每个点击事件中添加了隐藏元素:

function openPopup(url) {
    $("body")
    .append("<a style='display:none'></a>")
    .fancybox({
        'href' : url
    })
    .trigger('click');
}

希望这可以帮助

于 2010-08-03T02:17:41.043 回答
0

我确实添加了

elem.removeData( "fancybox" ); 

.trigger('click');

它对我有用。

于 2018-05-09T12:21:52.523 回答