jQuery接管所有锚标签

时间:2013-02-20 18:39:33

标签: javascript jquery html popup anchor

我已经为弹出窗口实现了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文件。我正在使用最新的jQuery,如果这有助于1.9.1和移动1.3.0我使用的是1.2.0,但想到可能更新的将解决问题,但无济于事。提前谢谢。

1 个答案:

答案 0 :(得分: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”或目标属性不会被Ajax加载。   相反,这些链接将导致整页刷新而没有动画   过渡。两个属性(rel =“external”和data-ajax =“false”)   具有相同的效果,但具有不同的语义含义:rel =“external”   应该在链接到另一个站点或域时使用   data-ajax =“false”对于简单地选择你的页面非常有用   通过Ajax加载域。由于安全限制,   框架总是选择从Ajax中链接到外部域   行为。

     

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

     

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