2013-04-10 163 views
0

我有一个锚点标记的列表,每个div中的每个内容都有控制,可以通过加载的内容来回移动。但我不能让它触发下一个或上一个兄弟的click():下一次被点击的锚点列表不起作用

  var current; 
      var request = new XMLHttpRequest(); 
      request.open("GET", "EPUBS/" + localStorage.book, false); 
      if(request.overrideMimeType){ 
       request.overrideMimeType('text/plain; charset=x-user-defined'); 
      } 
      request.send(); 
      var file = request.responseText; 
      var zip = new JSZip(file); 
      var $content = $(zip.file(localStorage.selected + "/toc.ncx").asText()).find("navPoint"); 
      $content.each(function(){ 
       $('#navbar').append("<a href = '#' id = '" + $(this).children('content').attr('src') + "' > " + $(this).children('navLabel').children('text').text() + "</a><br/>"); 
      }); 

$("#navbar > a").click(function(event) { 
    event.preventDefault(); 
    var t2 = ($(this).attr('id')).split("#"); 
    var $tr = $(zip.file("6130/" + t2[0]).asText()); 
    document.getElementById('main').innerHTML = ""; 
    $('#main').append('<h1>' + $(this).text() + '</h1>'); 
    document.getElementById('main').innerHTML += $tr.text(); 
    current = t2;  
}); 

$("#prev").click(function(event) {  
    event.preventDefault(); 
    $('#' + current).prev().click();  
}); 

$("#next").click(function(event) {  
    event.preventDefault(); 
    $('#' + current).next().click();  
}); 

     <div id = 'navbar'> 
    </div> 

    <div id = 'main'> 
     <h1 id = 'mHeading'>Book</h1> 
     <img src = 'book.png' width = '500px'/> 
     <p id = "d"></p> 
    </div> 

    <div id = 'controls'> 
     <table> 
      <tr> 
       <td width = "12%"><a href = "#" id = "c1" onclick = "document.getElementById('main').style.color = 'black'; document.getElementById('main').style.backgroundColor = 'white';">black on white</a></td> 
       <td width = "12%"><a href = "#" id = "c2" onclick = "document.getElementById('main').style.color = 'white'; document.getElementById('main').style.backgroundColor = 'black';">white on black</a></td> 
       <td width = "10%"></td> 
       <td><a href = "#" id = "prev" ><</a></td> 
       <td><a href = "#" id = "next" >></a></td> 
       <td width = "5%"><a href = "#" id = "s1" style = "font-size: 12px" onclick = "document.getElementById('main').style.fontSize = '14px'">A</a></td> 
       <td width = "5%"><a href = "#" id = "s1" style = "font-size: 16px" onclick = "document.getElementById('main').style.fontSize = '16px'">A</a></td> 
       <td width = "5%"><a href = "#" id = "s1" style = "font-size: 20px" onclick = "document.getElementById('main').style.fontSize = '20px'">A</a></td> 
      </tr> 
     </table> 
    </div> 

我写错了吗?第一个.click函数完美地工作

编辑:添加了代码的其余部分,但它使用了很多外部文件加载,他们工作,但是我只是不能到达下一个或上一个锚添加在第一次点击的方法

+2

你可以复制你的HTML,加上变量'current'初始化吗?或者,制作一个当前解决方案的jsFiddle - 可以更容易地找出真正发生的事情。 – 2013-04-10 08:16:19

回答

0

在最后两个功能当前未定义。

+0

我在代码的开头声明了当前的状态,我已经提醒过它,但是,对不起。 – Crossman 2013-04-10 08:15:02

+0

好吧,你确定$(“#”+ current)是有效的对象吗? – pedro 2013-04-10 08:17:19

+0

尝试提醒($('#'+ current).html()); – 2013-04-10 08:21:28

0

我不认为split()是必须的,因为返回的ID应该是字符串。我会用:

current = $(this).attr('id'); 

,我不知道这是如何工作完全是,但我认为这将是值得,欺骗,当你把它声明整定电流为默认值? (如果因为某种原因,最后2个点击函数在第一个函数之前被调用?)