2013-07-31 76 views
0

這裏是html代碼:我.live功能不點火,給我的錯誤使用jQuery 1.10.1

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css"/> 
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
<script src="js/lib/cordova-2.7.0.js"></script> 
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script> 
<script type="text/javascript" charset="utf-8" src="js/converter/Temperature.js"></script> 

<script type="text/javascript" charset="utf-8" src="js/converter/TemperatureContents.js"></script> 

<script type="text/javascript"> 
$(document).ready(function() 
{ 
alert("fgfgf"); 


}); 

</script> 


</head> 
<body> 
<div data-role="page" id="converterListPage" data-theme="b"> 

    <div data-role="header"> 
    <h1>UNIT CONVERTER</h1> 
    </div> 
    <div data-role="content" data-theme="e"> 


     <ul data-role="listview" data-inset="true"> 
     <li><a href="#" id="tempButton">TEMPERATURE</a></li> 
     <li><a href="#">WEIGHT</a></li> 
     <li><a href="#">CURRENCY CONVERTER</a></li> 
     </ul> 


    </div> 
</div> 
<div data-role="page" id="temperatureContents" data-theme="e"> 
    <div data-role="content"> 
    <p>sdfsdsdsds</p> 
    </div> 
</div> 
</body> 
</html> 

Temperature.js

$('#converterListPage').live('pageinit', function() { 

alert("converter list page"); 
$("#tempButton").off('click').on('click',function() 
{ 
    //$.mobile.changePage("#temperatureContents",null,true,true); 
    alert("button clicked"); 
}); 

}); 

得到錯誤在這條線:

$('#converterListPage').live('pageinit', function() 

錯誤是:

07-31 11:01:42.405: E/Web Console(730): TypeError: Result of expression '$('#converterListPage').live' [undefined] is not a function. at file:///android_asset/www/js/converter/Temperature.js:10 after using on :

yes now there is no error: but when putting this line in DOM READY: 



$(document).ready(function() 
{ 
alert("fgfgf"); 

$("#tempButton").off('click').on('click',function() 
{ 
// $.mobile.changePage("#temperatureContents",null,true,true); 
    alert("button clicked"); 
});  

其工作,但在temperature.js其不觸發事件時,把:

$('#converterListPage').on('pageshow', function() { 

alert("converter list page"); 
$("#tempButton").off('click').on('click',function() 
{ 
// $.mobile.changePage("#temperatureContents",null,true,true); 
    alert("button clicked"); 
}); 

}); 
+0

你不應該在JQM中使用'.ready'。 – Omar

回答

0

由於.live()棄用使用.on(),而不是像

$('#converterListPage').on('pageinit', function() 

而且makesure你把這在文件準備好本身..

+0

是的,現在沒有錯誤:但是當把這條線放在DOM READY: – nida

+0

我認爲你把這個代碼放在DOM準備好的只有.. – Gautam3164

+0

請參閱編輯的代碼 – nida

0

.live jQuery中使用1.10 $('#converterListPage').on('pageinit', function()

+0

請參閱編輯的問題 – nida

1

功能去掉直播事件處理程序已被棄用,在一個jQuery 1.8+不存在,但你已經被告知,所以我不打算用更多的細節來解釋。

關於您的新頁面事件處理,您將需要使用委託處理,目前這是處理頁面事件的正確方法。

更改此:

$('#converterListPage').live('pageinit', function() { 
    alert("converter list page"); 
    $("#tempButton").off('click').on('click',function() { 
     alert("button clicked"); 
    }); 
}); 

這樣:

$(document).on('pageinit', '#converterListPage',function() { 
    alert("converter list page"); 
    $(document).on('click',"#tempButton",function() { 
     alert("button clicked"); 
    }); 
}); 

工作jsFiddle例如:http://jsfiddle.net/Gajotres/PMrDn/66/

幾點注意事項:

  • 頁面事件綁定到文檔對象,在這種情況下,它並不在乎是否存在或不存在頁面,但是當該頁面在DOM中可用時,它將傳播給它。
  • 我已經刪除.off('click'),因爲在pageinit的情況下你不需要它,它只會觸發一次。在其他頁面事件的情況下(如pagebeforeshow)使用此行點擊事件:其他

    $(document).off('click',"#tempButton").on('click',"#tempButton",function() { 
    

一兩件事,如果這個頁面是不是你的初始頁面,然後你的JavaScript將被丟棄。這是因爲jQuery Mobile剝離了HEAD內容的每個後續頁面。

如果是這種情況,請閱讀此ARTICLE以瞭解如何解決該問題。如果您有任何問題,請隨時提問。

相關問題