我正在尝试将该输入中的文本添加到我的数据库中,但它只从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');
答案 0 :(得分:1)
currentID = $(this).closest('.todo');
是一个jQuery对象而不是ID
如果您想使用ID:currentID = $(this).closest('.todo').attr('id');
然后记得将$.get()
来电参数“改为”"id":currentID
btw:
attr('id')
而非data('id')
不推荐使用live()
。使用on()
代替
答案 1 :(得分: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()