2010-11-24 56 views
2

我有一个jQuery的弹出窗口附加到链接。如果页面未被完全加载(即.js文件),当链接被点击时,它将在浏览器窗口中打开而不是弹出。jQuery禁用链接,直到页面加载

我正在考虑禁用/隐藏链接,直到页面加载。

对于处理这个scenrio最好的做法是什么,并且你有任何代码示例?

+1

我会建议使用像接受的回答我的问题:http://stackoverflow.com/questions/3461152/progressive-enhancement-and-initial-display-state – Sonny 2010-11-24 14:14:16

回答

5

第一名您在DIV部分的链接,使该分区隐藏

<div style='display:none' id='LinkId'><a href=''>click</a></div> 

现在写在头部分的代码

<script language="javascript"> 

$(document).ready(function() { 
    $('#LinkId').show(); 
}); 

</script> 
+1

这应该完美。 如果您有时间并希望改善用户体验,而不是隐藏它,则可以将其设置为禁用的元素(使用CSS),并在.ready事件中将其替换为工作链接。真的很简单,用jQuery。 – Nacho 2010-11-24 12:57:06

1

其实这是恕我直言,一个很好的例子,为什么在直接分配事件处理程序尽管有许多人说,HTML代码并不一定是坏事。

如果您使用的是<a href="" onclick="myClickHandler()">Link</a>,那么链接的可见性和您可以使用它的时间之间将没有差距。它提高了可用性,因为用户不需要等待页面完全加载,并且在他看到它的那一刻仍然使用该链接。

-1

我也有类似的问题,其中一个链接的href正在由服务器和在href填充页面加载之前进行修改,以美国/ EN或/德/日的URL之前,

因此,如果我们点击在页面完全加载之前的链接上,它会转到不完整的URL,因此我会找不到页面。

因此,我采取的解决方案是: 尽快从客户端添加onclick =“event.preventDefault()”,然后在url更新时将其修改为onclick =“”。

所以这个问题得到解决,当网址不完整,然后点击没有发生。

0

我有同样的问题,这里是我如何解决它。

我不得不创建另外一个虚拟链接到我真正的链接即

<!--fake link is visible by default--> 
<li class="li_1"> 
<a class="dropdown-toggle" href="my_real_link_not_popup.html">Compose</a> 
</li> 

<!--original link is hidden with the hidden class by default--> 
<li class="li_2 hidden"> 
<a class="dropdown-toggle ajax-popup-link_write" id="write_main_a" href="my_real_link_is_popup.html">Compose</a> 
</li> 

我的剧本要这样:

$(document).ready(function() 
{ 
    //prevent event from being fired before page load 
    $(".li_1").addClass("hidden"); 
    $(".li_2").removeClass("hidden"); 
}); 

使页面加载与假链接,onpage load == "finish"然后虚假链接被隐藏,真正的链接变得可见。

唯一不利的一面是用户必须始终在其浏览器中启用Java脚本,否则他们将无法访问弹出窗口。但请注意,虚假链接仍然可以重定向到与弹出窗口内容相同的另一页面。 眼色

希望这有助于

相关问题