0

その入力からデータベースにテキストを追加しようとしていますが、li の最初の要素からしかデータを取得しません。問題は $("input#todo_id-" + currentID).val() にあります。どのような変更を行う必要がありますか? よろしくお願いします。

<li id="todo-'.$this->data['id'].'" class="todo">
<input id="todo_id-'.$this->data['id'].'" type="text" class="category">
<a id="addCategory" href="#" >Save</a>   
</li>

jquery:

$('#addCategory').live("click",(function(e){        
$.get("ajax.php",{'text':$("input#todo_id-" + currentID).val(),"id":currentID.data('id'),'action':'new_category' },function(msg){
        $(msg).hide().appendTo('.categoryList').slideDown();
});
    e.preventDefault();
}));

currentID = $(this).closest('.todo');
4

2 に答える 2

1

currentID = $(this).closest('.todo');IDではなくjQueryオブジェクトです。
ID が必要な場合は、次のように使用します。currentID = $(this).closest('.todo').attr('id');

次に、$.get()call パラメータ ìd を変更することを忘れないでください。"id":currentID

ところで:

attr('id')data('id')
live()推奨ではありません。on()代わりに使用

于 2013-03-13T22:11:45.363 に答える
0

クリックされたliのIDが必要だと思います。これを機能させるには、ハンドラー内で currentID を設定する必要があります。また、書かれているように、 currentID は実際の id 文字列ではなく、要素の jQuery です。

$('#addCategory').live('click', function(e) {
    var currentID = $(this).closest('.todo');
    $.get("ajax.php",
          {
              'text':currentID.find("input:first").val(),
              'id':currentID.attr("id"),
              'action':"new_category"
          },
// etc. etc.

Horen が指摘したように、私は .attr() ではなく .data(); を使用していることに注意してください。ホーレンは、.on() を支持して.live() が廃止されることについても正しい

于 2013-03-13T22:17:54.623 に答える