追加后的访问元素

时间:2013-05-14 07:27:50

标签: jquery

我已经阅读了我可以在这个主题上找到的每一篇文章,并尝试了很多“解决方案”,但它似乎对我不起作用。

$(function () {

    var options = {
        source: [
            "ActionScript",
            "AppleScript",
            "Asp",
            "BASIC",
            "C",
            "C++",
            "Clojure",
            ],
        minLength: 2
    };  

    $('#btn_addline').on ("click", function () {

        // get existing line number and increment by one
        var linenum = parseInt ($('#numlines').val()) + 1;

        // update hidden numlines field with new value
        $('#numlines').val(linenum);

        // define new field names
        var line_field = 'report['+linenum+'][line]';
        var notes_field = 'report['+linenum+'][notes]';
        var contact_field = 'report['+linenum+'][contact]';

        var newLine = $('<tr> \
            <td><input name="'+line_field+'" id="'+line_field+'" type="text" size="2" maxlength="2" class="form" value="'+linenum+'" readonly="readonly" /></td> \
            <td><input name="'+notes_field+'" id="'+notes_field+'" type="text" size="96" maxlength="256" class="form" /></td> \
            <td><input name="'+contact_field+'" id="'+contact_field+'" onFocus="attach_autocomplete()" type="text" size="32" maxlength="32" class="form" value="test123" /></td> \
            </tr>');

        // append new line to table
        //$('#report_items').append(newLine);

        $('#report_items').append(newLine)
            .hide()
            .fadeIn('Normal', function() {
                $(this).find('#'+contact_field).val('test');
                //alert ($(this).find('#'+contact_field).val());
                alert (contact_field);
                alert ($('#'+contact_field).val());
            });

        //$('#'+contact_field).autocomplete(options);

    });
});

新的HTML已正确添加,但我所做的一切都无法访问这些元素。我在整个网站上尝试了各种建议,现在感到很沮丧,希望得到一些帮助。

第三个提示 - alert ($('#'+contact_field).val()); - 返回“未定义”。

要说清楚,我已经彻底浏览了类似问题的清单,但还没有找到解决方案。很可能我遗漏了一些明显的东西,或者我不太了解追加元素之间的关系以及它对DOM的影响,但无论如何我真的可以在这里使用它。

干杯。

1 个答案:

答案 0 :(得分:2)

问题是您的选择器中有特殊字符。您需要使用两个反斜杠\\来逃避它们:

  

使用任何元字符(例如   !“#$%&amp;'()* +,。/:;&lt; =&gt;?@ [] ^`{|}〜)作为名称的字面部分,必须   用两个反斜杠逃脱:\。例如,一个元素   id =“foo.bar”,可以使用选择器$(“#foo \ .bar”)。

Check out the documentation