0

わかりました、次のように非表示の入力フィールドを動的に作成しています:

$("<input type='hidden' id=pid'"+postid+"-title name='posts["+postid+"][title]' value='' />" +
  "<input type='hidden' id=pid'"+postid+"-body name='posts["+postid+"][body]' value='' />" +
"<input type='hidden' id=pid'"+postid+"' class='category' name='posts["+postid+"][category]' value='' />" +
"<input type='hidden' id=pid'"+postid+"' class='author' name='posts["+postid+"][author]' value='' />"
).appendTo("#datatable");

デバッグを容易にするために、タイトル入力の id を変更して、そのクラス (タイトル) を含めました。だから、コードでアクセスできるはずのようです$('#pid'+id+'-title')。しかし、そうではありません。むしろ、使用した結果$("#pid"+id+"-title")toSource()は です({context:({}), selector:"#pid0-title"})。ちなみに、0 が正しい ID です。

JQuery と動的要素について明らかな何かが欠けているに違いないと感じています。オブジェクトが見つからないように見える理由は何ですか?

4

3 に答える 3

2

この方法で試すことができるのは、より明確で整然としたものです。

var createInputs = function(postid) {

    var 
        input = $('<input type="hidden" value="" />'),
        createInput = function(id, type) {
            return input.clone()
                    .addClass(type)
                    .attr('id', 'pid' + id + '-' + type)
                    .attr('name', 'posts[' + id + '][' + type + ']');
        };

    $()
        .add(createInput(postid, 'title'))
        .add(createInput(postid, 'body'))
        .add(createInput(postid, 'category'))
        .add(createInput(postid, 'autor'))
        .appendTo('#datatable');

};    

createInputs(1);

console.log($('#datatable').html());

于 2012-06-09T00:36:44.857 に答える
1

IDすべての入力で「一重引用符」の位置が間違っているため、入力は属性の値を取得していません。

この実用的なフィドルの例を参照してください!

コードを次のように調整します。

$("<input type='hidden' id='pid"+postid+"-title' name='posts["+postid+"][title]' value='' />" +
"<input type='hidden' id='pid"+postid+"-body' name='posts["+postid+"][body]' value='' />" +
"<input type='hidden' id='pid"+postid+"' class='category' name='posts["+postid+"][category]' value='' />" +
"<input type='hidden' id='pid"+postid+"' class='author' name='posts["+postid+"][author]' value='' />"
).appendTo("#datatable");

要素の選択は問題なく行われるはずです。


注: @Jeff Watkins が述べたようIDに、document.

input.categoryとはinput.author同じIDです。

次の関連ドキュメントを参照してください。

...ID 属性を使用して、その要素を一意に識別することができます。

于 2012-06-09T00:19:06.027 に答える
1

ID に引用符があり、ID が重複していますが、どちらも有効ではありません。受け入れ可能な文字を含む一意の ID を使用してください (英字で始まり、数字とアンダースコアを含めることができます。忘れてしまった他のいくつかの文字も含めることができます)。

$("<input type='hidden' id='pid"+postid+"-title' name='posts["+postid+"][title]' value='' />" +
  "<input type='hidden' id='pid"+postid+"-body' name='posts["+postid+"][body]' value='cccc' />" +
"<input type='hidden' id='pid"+postid+"-category' class='category' name='posts["+postid+"][category]' value='' />" +
"<input type='hidden' id='pid"+postid+"-author' class='author' name='posts["+postid+"][author]' value='' />").appendTo("#datatable");


 alert($("#pid1-body").val());

上記はjQueryで機能し、IDで選択して値を取得できます。IDのアポストロフィがコードを殺していました。

于 2012-06-09T00:08:38.530 に答える