jquery事件导致窗口刷新

时间:2014-03-17 00:43:00

标签: jquery backbone.js

我有骨干视图和点击事件,它们应该调用函数

events{
       "click .class": "myFunction"

}

问题是,有些事件只是做他们应该做的事情,而有些事件导致窗口刷新(例如,当我在页面中间的内容时,它会把我抛到页面顶部)

jquery 1.11以不同方式处理这些事件。

在这个地方

  // Triggered event must either 1) have no
                                // namespace, or
                                // 2) have namespace(s) a subset or equal to
                                // those in the bound event (both can have
                                // no namespace).

正常事件冒泡但

while ((matched = handlerQueue[i++])
                                && !event.isPropagationStopped()) {
                            event.currentTarget = matched.elem;

                            j = 0;
                            while ((handleObj = matched.handlers[j++])
                                    && !event
                                            .isImmediatePropagationStopped()) 

并且只是return event.result;

事件,刷新窗口进入此块:

// Triggered event must either 1) have no
                                    // namespace, or
                                    // 2) have namespace(s) a subset or equal to
                                    // those in the bound event (both can have
                                    // no namespace).
                                    if (!event.namespace_re
                                            || event.namespace_re
                                                    .test(handleObj.namespace)) {

                                        event.handleObj = handleObj;
                                        event.data = handleObj.data;

                                        ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler)
                                                .apply(matched.elem, args);

也许有人都遇到过这个问题...

2 个答案:

答案 0 :(得分:3)

是否有任何触发事件<a>标记的元素?也许是SRC&#34;#&#34;?如果是这样,请擦除SRC值并确保e.preventDefault之类的内容与事件相关联。

答案 1 :(得分:1)

您定义功能的地方:

myFunction: function(event){ //<--make sure you have the "event" argument
    event.preventDefault(); // <--Add this statement in your function

}