0

我有一个动态生成的面板,当单击触发器时,它会从右侧滑入和滑出。

这是HTML:

<div id="panel_wrapper">
    <div class="trigger">
        <a id="trigger"></a>
    </div>
    <div id="panel" class="right">
        <div id="panel_nav">
        </div>
    </div>
</div>

这是jQuery:

$(div).delegate('#trigger', 'click', function() {
    $('#panel').toggle('fast');
});

作为记录,这在 Firefox 中完美运行。它可以漂亮地滑入和滑出。但是,它在 Chrome 或 Safari 中无法正常工作(尚未在 IE 中测试)。在 Chrome 或 Safari 中测试时,它会成功打开和关闭一次。之后,它将不再起作用。这是踢球者。如果我没有通过持续时间间隔 | 字符串到切换功能,它工作得很好。$('#panel').toggle();

最初的反应可能是尝试其他方式滑入和滑出,我向你保证,我已经尝试过了。它们都会产生相同的副作用,即一次正常工作,然后不再起作用。关于到底是什么问题的任何线索?

如果需要更多详细信息,请告诉我。提前谢谢!

4

2 回答 2

4

这是您要查找的内容吗:jsFiddle 示例

jQuery

$('div.trigger').on('click', '#trigger', function() {
    $('#panel').toggle('fast');
});​

此外,从 jQuery 1.7 开始,.delegate()已被.on()方法取代。

于 2012-06-20T19:38:40.560 回答
0

这是你的(不工作)

$(div).delegate('#trigger', 'click', function() {
    $('#panel').toggle('fast');
});

这是我的(工作)

$('div.trigger').delegate('#trigger', 'click', function(e){
    $('#panel').toggle('fast');
});

演示。

更好的:

$('div.trigger').on('click', '#trigger', function(e) {
    $('#panel').toggle('fast');
});​

原因:有两个 div,并且由于“委托”,两个 div 都被委托,所以事件触发了两次,但没有指定它,但使用div.classname解决了它。检查此项以进行调试。

于 2012-06-20T19:38:24.213 回答