-1

我已经为弹出窗口实现了 jQuery 和 jQuery mobile,但经过一些测试后,我注意到 jQuery 正在接管所有锚点。如果我注释掉指向 jQuery 脚本的链接,并且我的锚点按预期工作,如果我取消注释它们,这些锚点将再次被接管,并且不会允许 href 正确通过。任何人都知道如何解决这个问题,至少可以说很烦人。这是样本...

<div>
 <ul>
  <li><a href="http://www.somesite.com">Somesite</a></li>
 </ul>
</div>
<div>
 <a href="#popupVideo" data-rel="popup" data-position-to="window" data-inline="true">Click</a>
 <div data-role="popup" id="popupVideo" data-overlay-theme="a" data-theme="d" data-tolerance="15,15" class="ui-content">
  <iframe width="560" height="315" src="http://www.somevideo.com" frameborder="0" allowfullscreen></iframe>
 </div>
</div>

    $( document ).on( "pageinit", function() {
        winW = window.innerWidth;
        winH = window.innerHeight;

        $( "#popupVideo iframe" )
            .attr( "width", 0 )
            .attr( "height", 0 );

        $( "#popupVideo" ).on({
            popupbeforeposition: function() {
                var size = scale( winW, winH, 15, 1 ),
                    w = size.width,
                    h = size.height;

                $( "#popupVideo iframe" )
                    .attr( "width", w )
                    .attr( "height", h );
            },
            popupafterclose: function() {
                $( "#popupVideo iframe" )
                    .attr( "width", 0 )
                    .attr( "height", 0 );    
            }
        });
    }); 

然后我有来自 jQuery 的示例附带的正确代码,该代码中没有任何内容是特定于锚点和特定于 id 的。另外,如果我删除调整弹出窗口的那个脚本,它仍然不起作用,我唯一链接的是 jQuery 文件。如果对 1.9.1 和移动 1.3.0 有帮助,我也在使用最新的 jQuery。先感谢您。

4

1 回答 1

1

我很确定您指的是 jQuery mobile 的默认行为。jQuery mobile 中锚标记的默认行为是使用 ajax 请求:

jQuery Mobile 旨在使用简单的页面链接约定。本质上,您可以像往常一样链接页面和资产,并且 jQuery Mobile 将在单页面模型中自动处理页面请求,并尽可能使用 Ajax。当 Ajax 不可用时(例如非同域 url,或者如果使用链接上的某些属性指定),则使用普通的 http 请求。

该模型的目标是允许开发人员使用最佳实践来创建网站——普通链接无需任何特殊配置即可“正常工作”——同时创建标准 HTTP 请求无法实现的丰富的、类似原生的体验。

http://jquerymobile.com/demos/1.2.0/docs/pages/page-links.html

此外:

指向其他域或具有 rel="external"、data-ajax="false" 或 target 属性的链接将不会被 Ajax 加载。相反,这些链接将导致整个页面刷新而没有动画过渡。两个属性(rel="external" 和 data-ajax="false")具有相同的效果,但语义不同:链接到另一个站点或域时应使用 rel="external",而 data-ajax=" false" 对于简单地选择域中的页面不通过 Ajax 加载很有用。由于安全限制,框架总是选择链接到外部域的 Ajax 行为。

在 1.1 版中,我们添加了对在父容器上使用 data-ajax="false" 的支持,这允许您从 Ajax 导航系统中排除大量链接。这避免了需要将此属性添加到容器中的每个链接。要激活此功能,必须将 $.mobile.ignoreContentEnabled 设置为 true。请在使用和设置此选项之前检查配置默认值。

注意:在构建一个全局禁用 Ajax 导航系统或在单个链接上经常禁用 Ajax 导航系统的 jQuery Mobile 应用程序时,我们建议禁用 $.mobile.pushStateEnabled 全局配置选项以避免在某些浏览器中出现不一致的导航行为。

于 2013-02-20T18:49:02.717 回答