我的jquery选择器有点问题。当我只有一个列表项时,jquery代码工作正常。但是当我有多个时,chatid
具有第一个列表项的值。为什么我总是第一个列表项的id?
我的html和foreach循环:
<ul data-role="listview" id="uItem1" data-inset="true">
<?php foreach ($result as $keyres => $rowres): ?>
<li><a class="chat" id="<?php echo $rowres['id']; ?>" href="accept.php">chat</a></li>
<?php endforeach; ?>
</ul>
我的jquery:
$("#uItem1 > li > a").click(function() {
var chatid = $("#uItem1 > li > a").attr('id');
$.ajax({ url: 'read.php',
data: {chatid},
type: 'POST',
success: function(output) {
// alert(output);
}
});
});
答案 0 :(得分:7)
您需要使用$(this)
var chatid = $(this).attr('id');
当你在php中使用foreach生成元素时,你可能需要
$("#uItem1").on('click',' > li > a',function() {
正如@Rory在评论中提到的那样,您可以使用this.id
答案 1 :(得分:4)
变化:
var chatid = $("#uItem1 > li > a").attr('id');
要:
var chatid = this.id;
var chatid = $(this).attr('id'); // For some reason if the previous didn't work.
答案 2 :(得分:1)
您需要使用this
关键字来引用引发事件的元素。从那里你可以得到它的id
财产。另请注意,您在$.ajax
调用中发送的对象无效,需要密钥和值。试试这个:
$("#uItem1 > li > a").click(function() {
var chatid = this.id;
$.ajax({ url: 'read.php',
data: {
'chatid': chatid
},
type: 'POST',
success: function(output) {
// alert(output);
}
});
});