2013-03-04 64 views
0

這是家庭作業,現在就聲明它。jQuery重點介於.click()事件之間

我必須通過XML(已成功完成)加載「測驗」,並生成td單元格(完成)以顯示上述問題(而不是測試數據)。

這裏是JavaScript的

var selected; 
var $cell; 
var $cell2; 
$(document).ready(function() { 
    $("#getTitle").click(function() { 
     selected = $("#quizname>option:selected").text(); 
     $("#quiztitle").html(selected+" Quiz"); 
     $("#quiz2").html(selected+" Quiz"); 
     murl = "quizdata.xml"; 
     $.ajax({type:"GET", 
      url:murl, 
      success:loaddata, 
      cache:false, 
      dataType:"xml", 
      data:selected, 
      error:ajaxerror 
     }); 
    }); 
}); 

var $xml; 
function loaddata(respobj,status,xhr) { 
    //to do: 
    //dynamic td creation for each xml question 
    $("#questions").empty(); 
    $xml = $(respobj).find("quiz:contains("+selected+")"); 
    for (var i=0;i<$xml.attr("qnum");i++) { 
     $('<tr>').attr("id","questions"+(i+1)).appendTo("#questions"); 

     $("<td>").attr("id","question"+(i+1)).appendTo("#questions"+(i+1)); 
     $("#question"+(i+1)).html((i+1)+". "+$xml.find("question[num='"+(i+1)+"']").text()); 
     $("#question"+(i+1)).addClass("th.thirty"); 

     $("<td>").attr("id","blank_question"+(i+1)).appendTo("#questions"+(i+1)); 
     $("#blank_question"+(i+1)).addClass("question"); 
     $("#blank_question"+(i+1)).html("Put Answer Here"); 

     $("<td>").attr("id","answer"+(i+1)).appendTo("#questions"+(i+1)); 
     $("#answer"+(i+1)).addClass("question"); 
     $("#answer"+(i+1)).html((i+1)+". "+$xml.find("answer[num='"+(i+1)+"']").text()); 

     $("#answer"+(i+1)).click(selectCell); 
    } 
} 

function selectCell() { 
    $cell = $(this); 
    $cell.css("background-color","red"); 
    for (i=0;i<$xml.attr("qnum");i++) { 
     $("#blank_question"+(i+1)).click(function() { 
      $cell2 = $(this); 
      $cell.css("background-color","lightgray"); 
      temp_text = $cell.text(); 
      temp_id = $cell.attr("id"); 
      $cell.attr("id",$cell2.attr("id")); 
      $cell.text($cell2.attr('id')); 
      $cell2.attr("id",temp_id); 
      $cell2.text(temp_id); 
      $("#answer"+(i+1)).unbind("click"); 
      $("#answer"+(i+1)).bind("click", function() { 
       selectCell(); 
      }); 
     }); 
    } 
} 

function swapCell() { 
    $cell.css("background-color","lightgray"); 
    alert($(this).attr("id")); 
} 

function ajaxerror(xhr,status,error) { 
    $("td#desc").attr("class",""); 
    $("td#desc").html("xhr="+xhr); 
    $("td#desc").append("<br /><br />status="+status) 
    $("td#desc").append("<br /><br />error="+error); 
} 

我的問題是我的源代碼(在這裏嘗試:HomeWork Link)的第一次單擊第一個單元格,與第二掉它,它的工作原理。但是,它僅適用於每隔一次點擊和交換,這讓我認爲存在一些綁定問題或焦點問題,因爲我需要它進行無縫交換。代碼中是否存在明顯的錯誤,或者我是否缺少特定的焦點/綁定事件?

謝謝!

編輯:正在顯示交換後的值是細胞ID屬性

回答

0

使用Google「的jquery遞歸。點擊結合」後,我發現的是,代替。點擊()我改成了.live()和該作品完美。

+0

很高興你明白了。 – 2013-03-04 03:28:34