我有一个jQuery函数,可以在列表中添加和删除产品。
$("#basketItemsWrap li img").live("click", function (event) {
$("#notificationsLoader").html('<img src="http://images/loader.gif">');
var oid = $("#thelist li").attr('id').split('_')[1];
$.ajax({
type: "POST",
url: "http://index.php/action/delete",
data: {
officeID: oid,
action: "delete"
},
success: function (theResponse) {
$("#officeID_" + oid).hide("slow", function () {
$(this).remove();
});
$("#notificationsLoader").empty();
}
});
});
我的HTML代码
<div id="basketItemsWrap">
<ul id="thelist">
<li></li>
<?php echo getBasket(); ?>
</ul>
</div>
html输出
<li id="officeID_15669">Office 1</li>
<li id="officeID_14903">Office</l 2i>
我想从<li>
拆分中获取id并获取数字,以便将值传递给数据库。
var oid = $("#thelist li").attr('id').split('_')[1];
单击时,oid
始终未定义。我的代码中有什么错误?
答案 0 :(得分:2)
$("#thelist li")
选择#thelist中的所有列表元素,第一个是<li></li>
。 attr('id')
应用于第一个,因此未定义。
在点击处理程序中使用它:
var oid = $(this).parent("li").attr('id').split('_')[1];
答案 1 :(得分:1)
我希望这可以帮到你:
$("#basketItemsWrap li img").on("click", function(event) {
$("#notificationsLoader").html('<img src="http://images/loader.gif">');
var attrid = $(this).parent().attr('id');
var oid = attrid.split('_')[1]);
$.ajax({
type: "POST",
url: "http://index.php/action/delete",
data: {officeID: oid, action: "delete"},
success: function(theResponse) {
$("#officeID_" + oid).hide("slow", function() {$(this).remove();});
$("#notificationsLoader").empty();
}
});
});
我为你创建了一个实例(但没有ajax函数):
http://jsbin.com/ozepoh/2/
答案 2 :(得分:1)
当您使用var oid = $("#thelist li").attr('id').split('_')[1];
时,它始终会获得列表中第一个id
的{{1}},而不是点击的li
id
。< / p>
您可以使用li
获得点击的li
。
$(this).parent()
答案 3 :(得分:0)
由于li为粗体
而未定义<div id="basketItemsWrap">
<ul id="thelist">
**<li></li>**
<?php echo getBasket(); ?>
</ul>
</div>
可见它没有id属性所以$(“#thelist li”)选择这个,然后$(“#thelist li”)。attr('id')导致未定义