我使用clone()函数添加一行,然后必须重命名新克隆行中的所有div。我试图这样做:
// Add button for new TOEFL entry $("#add-TOEFL").button().click(function( event ){ event.preventDefault(); var tag = 'TOEFL', testDate = $("#TOEFLtestDate-0").val(), reading = $("#readingTOEFLScore-0").val(), listening = $("#listeningTOEFLScore-0").val(), speaking = $("#speakingTOEFLScore-0").val(), writing = $("#writingTOEFLScore-0").val(), applicantId = $("#applicantId").val(), dataString = 'applicantId=' + applicantId + '&dateTaken=' + testDate + '&listeningScore=' + listening + '&readingScore=' + reading + '&speakingScore=' + speaking + '&writingScore=' + writing; // Insert New Record $.ajax({ type: "POST", url: "ajax/insertEntry.cfm?xAction=TOEFL", data: dataString, success: function(newIdx){ // Make sure returned value is a number newId = jQuery.trim(newIdx) * 1; // clone new row newDivId = tag + '-Entry-' + newId; newRow = $('#' + tag + '-Entry-0').clone().attr('id', newDivId); console.log('New row cloned. DivId: ' + newDivId); // get all ids $("#" + newDivId).find("[@id$='-0']").each(function(){ selectedDivId = $(this).attr("id"); alert(selectedDivId); }) } })
以下是HTML标记:
<div id="TOEFL-Entry-0" style="display: none" >
<p style="margin:5px 0 0 0">
Taken <input name="TOEFLtestDate-0" type="text" id="TOEFLtestDate-0" class="inputDateField" style="margin-left:5px; margin-right:15px;"/>
Reading <input name="readingTOEFLScore-0" type="text" id="readingTOEFLScore-0" class="inputTinyScoreField" style="margin:0 8px 0 5px"/>
Listening <input name="listeningTOEFLScore-0" type="text" id="listeningTOEFLScore-0" class="inputTinyScoreField" style="margin:0 8px 0 5px"/>
Speaking <input name="speakingTOEFLScore-0" type="text" id="speakingTOEFLScore-0" class="inputTinyScoreField" style="margin:0 8px 0 5px"/>
Writing <input name="writingTOEFLScore-0" type="text" id="writingTOEFLScore-0" class="inputTinyScoreField" style="margin:0 8px 0 5px"/>
<button id="add-TOEFL-0">Add</button>
</p>
</form>
</div>
即使认为应该有一堆符合此标准的ID,我也没有看到警报。
我做错了什么?
约什
答案 0 :(得分:1)
有两个问题:
最近更新的OP代码有[@id$='-0']
- 原始问题没有。对于当前版本的jQuery,这应该是[id$='-0']
。
克隆节点但从未添加到DOM中。使用类似的东西:
var Entry0 = $('#' + tag + '-Entry-0');
var newRow = Entry0.clone().attr('id', newDivId);
//console.log ('New row cloned. DivId: ' + newDivId);
Entry0.parent ().append (newRow);
在尝试获取ID之前。
您发布的代码没有任何问题。问题在于你还没有向我们展示过。
发布您的HTML和完整的JavaScript。理想情况下,发布一个复制问题的最小但完整的样本。
答案 1 :(得分:0)
感谢您的帮助。
问题实际上是克隆行尚未显示,需要引用为“newRow”而不是$(“#”+ newDivId)。
一旦我改变了它,它就像一个冠军。
不太确定为什么会这样,但这会让情况变得更糟。