使用jQuery选择器查找以某种方式结束的所有ID

时间:2010-08-18 23:33:26

标签: jquery

我使用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,我也没有看到警报。

我做错了什么?

约什

2 个答案:

答案 0 :(得分:1)

更新新的问题代码。

有两个问题:

  1. 最近更新的OP代码有[@id$='-0'] - 原始问题没有。对于当前版本的jQuery,这应该是[id$='-0']

  2. 克隆节点但从未添加到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之前。


  3. 您发布的代码没有任何问题。问题在于你还没有向我们展示过。

    发布您的HTML和完整的JavaScript。理想情况下,发布一个复制问题的最小但完整的样本。

答案 1 :(得分:0)

感谢您的帮助。

问题实际上是克隆行尚未显示,需要引用为“newRow”而不是$(“#”+ newDivId)。

一旦我改变了它,它就像一个冠军。

不太确定为什么会这样,但这会让情况变得更糟。