2012-01-09 33 views
1

任何想法,为什么这不工作在我的PHP文档? 当我在jsfiddle上测试这个时,一切正常。为什么我的事件处理程序绑定与jQuery不发射?

<head> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
    <script type="text/javascript"> 
     $("a").click(function() { 
      $("div.info").hide(); 
      $("div." + this.className).show(); 
     }); 
    </script> 
</head> 

<body> 
    <div class="shipping-container"> 
     <a href="#" class="ups">Show UPS info</a> 
     <a href="#" class="fedex">Show Fedex info</a> 
     <div class="ups info" style="display:none">the info for ups</div> 
     <div class="fedex info" style="display:none">Who let the dogs out</div> 
    </div> 
</body> 
+4

不错的问题标题。 – Jules 2012-01-09 14:58:16

+1

@Jules:不敢相信[没有人使用过标题](http://meta.stackexchange.com/questions/104914/add-title-uniqueness-to-the-heuristics-for-detecting-low-质量问题/ 106796#106796)! – Matt 2012-01-09 15:00:17

+1

@Matt你的头衔比我做的好得多;) – 2012-01-09 15:01:36

回答

1

您正在链接元素存在之前运行脚本。

在jsfiddle中,代码默认放置在文档加载后运行的事件中。使用ready事件要做到这一点在你的代码:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("a").click(function() { 
    $("div.info").hide(); 
    $("div." + this.className).show(); 
    }); 
}); 
</script> 
6

你错过了文档准备好处理程序,试试这个:

<script type="text/javascript"> 
    $(function() { 
     $("a").click(function() { 
      $("div.info").hide(); 
      $("div." + this.className).show(); 
     }); 
    }); 
</script> 

另外,您可script的标签,因为它是,但把它放在文件的最后,</body>标记之前。

2

你应该确保你的jQuery代码只加载后您的DOM完全加载这样做:

$(document).ready(function() { 

    $("a").click(function() { 
     $("div.info").hide(); 
     $("div." + this.className).show(); 
    }); 

}); 
1

我认为你应该做的这在你的头:

<script type="text/javascript"> 
$(document).ready(function() { 
    $("a").click(function() { 
     $("div.info").hide(); 
     $("div." + this.className).show(); 

}); 
</script> 

这将确保你试图附加任何事件处理程序之前,所有的DOM对象(尤其是一元)的加载。

相关问题