我试图从一个简单的MySQL数据库表中检索用户列表,例如名为TableA的,它看起来像这样:Username(varchar),Level(tinyint), dateCreated会(日期时间)。如何使用jQuery访问动态创建的div的属性
在一个html页面上,我有一个搜索输入框,说 - 在它下面我有一个div,说显示结果。我拥有它,所以当我开始输入一个单词(寻找用户名)时,jQuery向一个php文件发出一个ajax请求,该文件向TableA查询用户名。
jQuery的部分看起来像:
$("#search_bar").keyup(function()
{
var user = $(this).val();
$.post('get_user.php', user_name : user, function(data)
{
$("#result_box").html();
});
}
PHP脚本,get_user.php,又是一个简单的脚本,它看起来像
<?php
$user = $_POST['user_name'];
//connect db,
$query = mysqli_query (select Username from TableA where Username like '$user%');
//IMPORTANT PART HERE, I create a <DIV> or can be <P> and display it back
while ($row = mysqli_fetch_array($query))
{
echo "<div id="user_info" username='".$row['Username']."'>".$row['Username']."</div>
//I have the username as an attribute so I can make another .post request and get detailed user info.
}
?>
现在,以前使用jQuery,每次结果正在被转储到result_box div($(“#result_box”)。html();)中。我遇到的问题是,如果我有3个用户,比如说Mick,Mike和Mila以及我通过输入'M'开始搜索,则查询返回全部三个(没关系),但是,当我点击一个名称时,说最后一个返回的将是Mila,这将触发另一个jQuery函数,它现在只是在弹出框中打印选定的名称 - 但它从出现的第一个div中提取名字的属性Mick那里,而不是我点击的那个。真奇怪。如果搜索只返回一个条目,那么这很好 - 但是,无论我点击哪一个条目,只有第一个条目。我猜它是因为divs都有相同的ID,并且由于它们是'动态'创建的 - 所以jQuery只是拿起属性(例如,$(“#user_info”)。attr('username'))是第一个还是唯一一个创建的?
任何帮助,将不胜感激。
谢谢
你的ID应该是唯一的。为什么不让div ID成为从查询返回的用户名? – bart2puck
你可以使用jquery'.on()'方法访问动态访问内容 –