簡體   English   中英

jQuery焦點在.click()事件之間

[英]jQuery focus between .click() events

這是作業,現在就宣布。

我必須通過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鏈接 )第一次單擊第一個單元格時,將其與第二個單元格互換,它將起作用。 但是,它僅適用於所有其他單擊和交換,這使我認為存在一些具有約束力的問題或焦點問題,因為我需要它進行無縫交換。 代碼中是否存在明顯的錯誤,或者我是否缺少特定的焦點/綁定事件?

謝謝!

編輯:交換后顯示的值是單元格ID屬性

在搜索了“ jquery遞歸.click綁定”之后,我發現不是將.click()而是將其更改為.live(),並且效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM