我无法使用jQuery遍历新添加的DOM元素

时间:2010-05-25 05:02:39

标签: javascript jquery css forms

我有一个表单,我想用它来添加条目。添加条目后,应重置原始表单以准备下一个条目,并且在重置之前应复制保存的表单并将其附加到“storedEntries”的div上。这很多工作(大部分),但我无法访问新创建的表单...我需要将提交按钮的值属性从“添加”更改为“编辑”,以便正确地传达点击该按钮应该是什么做。继承我的形式:

  <div class="newTruck">
    <form id="addNewTruck" class='updateschedule' action="javascript:sub(sTime.value, eTime.value, lat.value, lng.value, street.value);">

        <b style="color:green;">Opening at: </b>
            <input id="sTime" name="sTime" title="Opening time" value="Click to set opening time" class="datetimepicker"/>

        <b style="color:red;">Closing at: </b>
            <input id="eTime" name= "eTime" title="Closing time" value="Click to set closing time" class="datetimepicker"/>

        <label for='street'>Address</label>
            <input type='text' name='street' id='street' class='text' autocomplete='off'/>
            <input id='submit' class='submit' style="cursor: pointer; cursor: hand;" type="submit" value='Add new stop'/>
        <div id='suggests' class='auto_complete' style='display:none'></div>
            <input type='hidden' name='lat' id='lat'/>
            <input type='hidden' name='lng' id='lng'/>

  </form>

 </div>

香港专业教育学院尝试使用一百种不同的选择器与jquery无济于事...继承我的剧本:

function cloneAndClear(){
    var id = name+now;
    $j("#addNewTruck").clone(true).attr("id",id).appendTo(".scheduledTrucks");
    $j('#'+id).filter('#submit').attr('value', 'Edit');

    $j("#addNewTruck")[0].reset();

    createPickers();
}

元素被正确克隆并插入到div中,但我无法找到访问此元素的方法......脚本中的第三行永远不会有效。

我遇到的另一个问题是克隆形式的'值'会恢复为html源代码中的值而不是用户输入的值。

关于如何解决这两个问题的建议非常感谢!

3 个答案:

答案 0 :(得分:4)

我认为你想使用find而不是filter

$j('#'+id).find('#submit')

这应该在实践中起作用,尽管你遇到了问题,因为有多个元素具有相同的id。我会更改您的HTML以使用类,或者在这种特定情况下,您不需要:

$j('#' + id).find(":submit")

答案 1 :(得分:1)

您是否尝试过使用.val()?而不是.filter(),请使用.find()

$j('#'+id).find(':submit').val('Edit');

答案 2 :(得分:0)

nickf解决方案有效。 (只是写了一段代码来检查)。请在jquery文档中检查过滤器的定义。

  

将匹配元素集合减少到与选择器匹配的元素或通过函数测试。

在这种情况下你使用了find。另外,如上所述,具有相同id的多个元素很麻烦,尤其是在进行dom操作时。最好选择合适的课程。