2013-04-18 95 views
0
$('li').on('click', function(event) { 
      console.log("inside music player"); 
      var projIndex = $(this).index(); 
      selectedMedia=$(this).text(); 
      console.log("------"+projIndex); 
      console.log("------"+selectedMedia); 
      var extension = selectedMedia.substr((selectedMedia.lastIndexOf('.') +1)); 
      console.log("extension-----"+extension); 
      if(extension=="mp3" || extension=="wav") 
       { 
       var musicLink="#musicPlay_page"; 
       var selectedLink = document.getElementById('mediaLink'); 
       selectedLink.href=musicLink; 
       $('#musicPlay_page').add(playMusicList(selectedMedia)); 
       }       
      else if(extension=="mp4") 
       { 
       var videoLink="#videoPlay_page"; 
       var selectedLink = document.getElementById('mediaLink'); 
       selectedLink.href=videoLink; 
       $('#videoPlay_page').add(playVideoList(selectedMedia)); 
      } 

     }); 

在上面的代碼中,我需要根據我選擇的媒體類型(mp3或mp4)導航到兩個不同的頁面。如果它的MP3然後它導航到musicPlay頁面,如果它的MP4它應該導航到videoPlay page.it效果很好,當我點擊列表中的第一個文件,即它導航到其他頁面,但是當我點擊列表的第一個元素以外它不會導航到其他頁面,而是它會在當前頁面中播放該文件,請解決此問題。問題,如果條件頁面導航

function onsuccess(files) { 
     $('#media_list').remove(); 

     var d='<div id="media_list">'; 
     d += '<ul data-role="listview" style="list-style: none outside none;padding: 0;">' 
      +'<div style="font-weight:bold;color:black;">'; 
     for(var i = 0; i < files.length; i++) { 
      console.log("File Name is " + files[i].name); // displays file name 

      if(files[i].isDirectory == false){  
       d+='<li style="vertical-align: top;">' 
        +'<a href="" id="mediaLink">' 
        +'<img src="/images/musicPlay_logo.jpg" id="musicPlay"/>' 
        +files[i].name 
        +'</a><hr color="black" size =1 width=500></li>'; 

      } 
     } 
     d+= '</div>'; 
     d+= '</ul>'; 
     d+= '</div>'; 
     $("#media_content").append(d); 

}

這個我曾經顯示器,它顯示的媒體文件列表中的HTML內容的功能,你可以在「A」的標籤我離開的href空白看到,這樣就點擊它去點擊功能和取決於我點擊了文件的格式它去,如果條件和頁面應該打開

+0

提供您正在處理的html。 – 2013-04-18 07:08:25

+0

當你點擊第一個元素以外的其他元素時,console.log(「extension -----」+ extension)的輸出是什麼 ? – 2013-04-18 08:42:32

+0

它給出正確的擴展名,它也播放歌曲,但不去音樂播放頁面 – 2013-04-18 08:44:17

回答

-3

,而不是如果(擴展==「MP3」 ||擴展==「WAV」)

試試if(extension.equals(「mp3」)|| extension.equals(「wav」))

+0

'extention'是一個字符串,[JavaScript strings](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String)沒有'equals'方法。 – 2013-04-18 07:33:12

+0

是的,因爲控制進入裏面如果條件,它只是新的頁面沒有得到加載的點擊列表元素以外的第一個元素 – 2013-04-18 08:17:53

0

問題很簡單。你使用的是ID而不是類。 ID是唯一的,不超過1個元素應該具有相同的ID。在這裏,您多次使用mediaLinkmusicPlay ID,並且JavaScript僅查找第一個匹配項,因爲根據定義,應該不會有更多。 更改ID,以類,其是可重複使用的標識符,像這樣:

d+='<li style="vertical-align: top;">' 
    +'<a href="" class="mediaLink">' 
    +'<img src="/images/musicPlay_logo.jpg" class="musicPlay"/>' 
    +files[i].name 
    +'</a><hr color="black" size =1 width=500></li>'; 

或添加一些獨特的ID,因此不重複,如循環計數器(i),如下圖所示:

d+='<li style="vertical-align: top;">' 
    +'<a href="" id="mediaLink-'+i+'">' 
    +'<img src="/images/musicPlay_logo.jpg" id="musicPlay-'+i+'"/>' 
    +files[i].name 
    +'</a><hr color="black" size =1 width=500></li>'; 

然後改變你的點擊處理程序來代替使用class/id。沒有相關的HTML代碼,這就是我所能說的。如果您可以提供HTML代碼,我可能會幫助您進一步更改處理程序的代碼。