2011-07-08 31 views
0

出於某種原因,下面的代碼將工作:JQuery的事件不能與類型被稱爲=「文/ JavaScript的」

下面的代碼不起作用:

<script type='text/javascript'> 
    $('#login_password').click(function() { 
    alert('Handler for .click() called.'); 
    }); 
</script> 

但它確實當我做不指定腳本類型,像這樣:

<script> 
    ... 
</script> 

爲什麼我需要離開腳本類型爲不確定的元素事件調用?

更奇怪的是,下面的工作:

<script type='text/javascript'> 
    $(document).ready(function(){ 
    $("#login_username").focus(); 
    }); 
</script> 

我on Rails的3.0.9使用JQuery 1.6.1。 gem jquery-rails 1.0.12被安裝和捆綁。

在我application.html.erb我打電話:

<%= javascript_include_tag 'application.js', 'jquery.min.js', 'jquery.rails.js' %> 

哪裏jquery.rails.js是不顯眼的腳本適配器https://github.com/rails/jquery-ujs

提前感謝!

+3

被放置在您的第一個片段' '標籤?我敢打賭,這個問題試圖在DOM準備好之前在DOM上執行一個腳本 - 這就解釋了爲什麼第三個代碼段可以正常工作。 – Kevin

+0

這實質上是這個問題。 看到[這個答案](http://stackoverflow.com/questions/3501385/ror-jquery-not-working/3501401#3501401)後,我改變了我的腳本請求的順序,所以我現在有 <% = javascript_include_tag'jquery.min.js','jquery.rails.js','application.js'%> 這可確保在我開始調用JQuery庫之前加載JQuery庫。 – TimeEmit

+0

如果您想提供相應的信息,我將回復作爲答案添加了更多詳細信息:) – Kevin

回答

0

聽起來好像你正試圖在DOM準備好之前在DOM上執行一個腳本,這就解釋了爲什麼第三個代碼段工作正常。

如果你的腳本是你使用(例如,包括在<head>標籤中的腳本)工作的元素加載之前,請務必將它們像這樣:

$(document).ready(function() { 
    // manipulate DOM here 
}); 

// or 

jQuery(function($) { 
    // manipulate DOM here 
}); 
1

嘗試用包裝$(文件)你的第一個例子。就緒喜歡

<script type='text/javascript'> 
$(document).ready(function(){ 
    $('#login_password').click(function() { 
    alert('Handler for .click() called.'); 
    }); 
}); 
</script> 
+0

如果它不在DOM中,他將無法點擊它;) – AlienWebguy

1

見凱文的評論,他是對的。沒有指定類型屬性的事實只是時運或一些瀏覽器特定的僥倖。