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');是一个 jQuery 对象而不是一个 ID。
如果您想要一个 ID,请使用:currentID = $(this).closest('.todo').attr('id');

然后记得把你的$.get()调用参数ì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(); Horen 关于 .live() 被弃用而支持 .on() 也是正确的

于 2013-03-13T22:17:54.623 回答