所以我想讓用戶點擊一個按鈕的按鈕值包含問題編號和div ID。然後我試圖使用該題號訪問文本是在具有ID question_no「+ _文字我應該得到的文本行是一個跨度:jQuery .text()函數不工作
var text=$("div#"+div+" span#"+question_no+"_text").text();
的問題是它是工作的一半時間會搶了一些跨度,但不是別人的文字
HHere是我寫的劇本:。
$("button.add_answer").click(function() {
var question_no=$(this).attr("value")
var div=$(this).attr("data-version");
var text=$("div#"+div+" span#"+question_no+"_text").text();
var answer=$("div#"+div+" [name="+question_no+"]");
var answerText;
var answerValue;
var checkbox=false;
alert($("div#"+div+" span#"+question_no+"_text").length);
if (answer[0].tagName.toLowerCase() == "input") {
if(answer.attr("type") == "text") {
answerText=answer.val();
answerValue=answer.val();
} else if (answer.attr("type") == "radio") {
var answer=$("div#"+div+" [name="+question_no+"]:checked");
answerValue=answer.val();
answerText=answer.next().text();
} else {
alert("checkbox");
checkbox=true;
$("div#"+div+" [name="+question_no+"]:checked").each(function() {
answerText=$(this).next().text();
answerValue=$(this).val();
$("div#saved_answers table").append("<tr id=\""+question_no+"\"><td>"+text+"</td><td>"+answerText+"</td></tr>");
});
}
} else if (answer[0].tagName.toLowerCase()=="textarea") {
answerText=answer.val();
answerValue=anser.val();
} else if(answer[0].tagName.toLowerCase == "select") {
answerText=answer.find("option:selected").text();
answerVal=answer.val();
}
if(!checkbox) {
$("div#saved_answers table").append("<tr id=\""+question_no+"\"><td>"+text+"</td><td>"+answerText+"</td></tr>");
}
});
這裏是標記:
<div id="1527" class="Questions">
<h1>Questions</h1><hr><br />
<ul class="error" id="498_error"></ul>
<span id="498_text">Title of Representative Completing This Section</span><br />
<input type="hidden" name="498_max_length" id="498_max_length" value="25">
<input type="hidden" name="498_min_value" id="498_min_value" value="">
<input type="hidden" name="498_max_value" id="498_max_value" value="">
<input type="hidden" name="498_regex_format" id="498_regex_format" value="">
<input type="hidden" name="498_system_type" id="498_system_type" value="2">
<input type="hidden" name="498_app_type_version" id="498_app_type_version" value="1527">
<input class="questionChoice" type="text" name="498" />
<br />
<button class="add_answer" value="498" data-version="1527">Add answer</button>
<br /><br />
<ul class="error" id="2150_error"></ul>
<span id="2150_text">Signature:</span><br />
<input type="hidden" name="2150_max_length" id="2150_max_length" value="">
<input type="hidden" name="2150_min_value" id="2150_min_value" value="">
<input type="hidden" name="2150_max_value" id="2150_max_value" value="">
<input type="hidden" name="2150_regex_format" id="2150_regex_format" value="">
<input type="hidden" name="2150_system_type" id="2150_system_type" value="2">
<input type="hidden" name="2150_app_type_version" id="2150_app_type_version" value="1527">
<input class="questionChoice" type="text" name="2150" />
<br />
<button class="add_answer" value="2150" data-version="1527">Add answer</button>
<br /><br />
</div>
它正確地從第二個問題簽名,但不是第一個問題,代表標題完成本節。
在文字與輸入一起被抓住之後,我只是把它們放在一個表格中。
任何想法爲什麼這隻會抓住文本每隔一段時間?
它不能「一半工作」。我建議在您的點擊事件中放置一個斷點,並檢查您嘗試使用的選擇器是否正確。 – sdespont
問題在這裏 - >'var div = $(this).attr(「data-version」);'。因爲在第一個塊中,你應該使用'data-app_type_version =「1527」'而不是'data-version'。這意味着你不能'引用div'。解決這個問題,你會沒事的。 – Ohgodwhy
它們在代碼中實際上是相同的,這只是我在將其輸入堆棧溢出時發生的錯誤。我已經編輯 – Beamer180