Javascript 对从字符串创建的对象执行jQuery find()

Javascript 对从字符串创建的对象执行jQuery find(),javascript,jquery,dom,Javascript,Jquery,Dom,我有一个值为的字符串 当我想弹出选择时,我想做一些类似的事情来找到选择,然后弹出它: $("<select name="id"></select>").find('select').html('<option value="1">Test</option>; $(“”).find('select').html('Test; 但是,$(“”)似乎与任何内容都不匹配 我做错了什么 编辑:好的,发布整个代码: 我有一个元素,其中包含一个原型表单:

我有一个值为
的字符串

当我想弹出选择时,我想做一些类似的事情来找到选择,然后弹出它:

$("<select name="id"></select>").find('select').html('<option value="1">Test</option>;
$(“”).find('select').html('Test;
但是,
$(“”)
似乎与任何内容都不匹配

我做错了什么


编辑:好的,发布整个代码:

我有一个
元素,其中包含一个原型表单:

<ul id="advanced_search_fields"></ul>
<script type="text/html" id="prototype_fields">
    <select name="search[__i__][field]" class="field_selector">
        <option></option>
        <option data-type="choice" value="10">Bank</option>
    </select>
</script>

<script type="text/javascript">
    var field_config = {"10":{"choices":["Choice 1","Choice 2","Choice 3","Other"]}};
</script>

<script type="text/html" id="prototype_choice">
    <select name="search[__i__][value]"></select>
</script>

<script type="text/javascript">
    var srch_list = $('#advanced_search_fields');
    var add = function(){
        srch_list.append('<li>' + $('#prototype_fields').html() + '</li>');
    };
    var change_field = function(){
        $(this).parent().find('span.field').remove();
        $(this).parent().data('id', $(this).val());
        change_field_to_type($(this).val(), $(this).find('option:selected').data('type'), $(this).parent());
    };
    var change_field_to_type = function(id, type, li){
        var prototype = $('#prototype_' + type).html();
        var formHtml = "";

        switch(type)
        {
            case "choice":
                var select = $(prototype).filter('select');

                $(field_config[id]['choices']).each(function(i, val){
                    select.append(
                        $('<option></option>')
                        .attr('value', val)
                        .text(val)
                    );
                });
                formHtml = prototype;
            break;
        }
        li.append('<span class="field">' + formHtml + '</span>');
    };

    $('.field_selector').live('change', change_field);
    add();
</script>

<input type="button" value="+" onclick="add();">
    银行 变量字段_config={“10”:{“选项”:[“选项1”、“选项2”、“选项3”、“其他”]}; var srch_list=$(“#高级搜索字段”); var add=函数(){ srch_list.append(“
  • ”+$(“#原型_字段”).html()+”
  • ); }; var change_字段=函数(){ $(this.parent().find('span.field').remove(); $(this.parent().data('id',$(this.val()); 将_字段_更改为_类型($(this.val(),$(this.find)('option:selected')。数据('type'),$(this.parent()); }; var将\字段\更改为\类型=函数(id、类型、li){ var prototype=$('#prototype.'+type).html(); var formHtml=“”; 开关(类型) { 案例“选择”: var select=$(原型).filter('select'); $(字段配置[id]['choices'])。每个(函数(i,val){ select.append( $('') .attr('value',val) .文本(val) ); }); formHtml=原型; 打破 } li.追加(“”+formHtml+“”); }; $('.field\u selector').live('change',change\u字段); 添加();
    您正在创建一个新元素,而不是选择一个现有元素。如果不将该元素附加到DOM中,您将看不到结果。请尝试:

    $("<select name=\"id\"></select>").appendTo($("body"));
    
    您正在创建新元素,而不是选择现有元素。如果不将该元素添加到DOM中,您将看不到结果。请尝试:

    $("<select name=\"id\"></select>").appendTo($("body"));
    

    你需要把它附加到某个东西上

    $("<select name='id'></select>").append('<option value="1">Test</option>').appendTo("div");
    
    $(“”)。追加('Test')。追加('div”);
    

    这是小提琴

    您需要将它附加到某些东西上

    $("<select name='id'></select>").append('<option value="1">Test</option>').appendTo("div");
    
    $(“”)。追加('Test')。追加('div”);
    

    这是您正在创建一个新的
    select
    元素的fiddle,因此您得到的jQuery对象只包含该元素。使用
    find
    搜索该元素中的匹配项,因此自然不会有匹配项

    您根本不需要使用
    find
    ,因为jQuery对象只包含一个元素:

    var sel = $('<select name="id"></select>').html('<option value="1">Test</option>');
    
    var sel=$('').html('Test');
    

    (另外,在由引号分隔的字符串中使用引号,包含选项的字符串没有匹配的结尾撇号,并且
    html
    方法调用也没有结尾括号。)

    您正在创建一个新的
    select
    元素,因此您得到的jQuery对象只包含该元素。使用
    find
    搜索该元素中的匹配项,因此自然不会有匹配项

    您根本不需要使用
    find
    ,因为jQuery对象只包含一个元素:

    var sel = $('<select name="id"></select>').html('<option value="1">Test</option>');
    
    var sel=$('').html('Test');
    

    (另外,在由引号分隔的字符串中使用引号,包含选项的字符串没有匹配的结尾撇号,并且
    html
    方法调用也没有结尾括号。)

    Find在您的
    字符串中找不到任何内容,因为它正在select标记中查找“select”元素。有关详细信息,请参阅此答案-

    你可以试试这样的东西-

    var html= '<select name="id"></select>';
    var $select = $('<div></div>').append(html);
    $select.find('select').append('<option value="1">Test</option>');
    alert($select.html());
    
    var html='';
    var$select=$('').append(html);
    $select.find('select').append('Test');
    警报($select.html());
    

    正在运行的演示-

    查找在您的
    字符串中找不到任何内容,因为它正在选择标记中查找“select”元素。有关详细信息,请参阅此答案-

    你可以试试这样的东西-

    var html= '<select name="id"></select>';
    var $select = $('<div></div>').append(html);
    $select.find('select').append('<option value="1">Test</option>');
    alert($select.html());
    
    var html='';
    var$select=$('').append(html);
    $select.find('select').append('Test');
    警报($select.html());
    

    工作演示-

    重新编辑;在您实际使用的代码中,我找不到与原始问题类似的代码。那么,您对代码的哪一部分有问题?重新编辑;在您实际使用的代码中,我找不到与原始问题类似的代码。那么,哪一部分您是否对代码有问题?