JQuery Toggle在URL之后添加#,e.preventDefault();不工作

时间:2012-11-27 17:14:42

标签: javascript jquery

在IE上遇到问题,在点击切换后,#会被添加到URL的末尾。 (即website.com/direc/main.html* *

这是禁用所有切换功能。无法在FireFox上复制该问题。我有一个e.preventDefault();在每个函数中,但我无法通过将e.prevent放在不同的位置来解决此问题。

以下代码:

    $(document).ready(function(){
      $("#1_EH").click(function(e){ 
        $("#1_S").slideToggle("slow");
e.preventDefault(); 
        }); 
    });
    $(document).ready(function(){
      $("#2_EH").click(function(e){ 
        $("#2_S").slideToggle("slow"); 
        e.preventDefault(); 
        }); 
     });

<a href="#" id="1_EH"><img src="pic.jpg" border="0" alt="" /></a>
<div class="client_box" id="1_S">
    <h2>text</h2>
    <p>text<a href="http://www.url.com" target="_blank">Directions &raquo;</a></p>
</div>

3 个答案:

答案 0 :(得分:4)

ID不能以数字开头;结果是未定义的(可能)在Internet Explorer中被破坏。修复您的ID属性(1_EH / 1_S / etc),以字母而不是数字开头。

答案 1 :(得分:1)

e.preventDefault()应该是函数(e)之后的第一行:

   $("#2_EH").click(function(e){ 
            e.preventDefault(); 
    ...stuff to be done...
    });

此处修复的示例代码:http://jsbin.com/welcome/54005/

请不要删除,但请注意,从正确答案的海报来看,这个答案实际上是不正确的,应予以忽视。

答案 2 :(得分:-1)

尝试从链接中的href中删除哈希标记。