我正在使用工作正常的keyup jquery函数填充无序列表。但是,一旦返回信息,我想通过单击li来获取ID:
这是我的功能:
if( $_REQUEST["assist"] ) {
$search_sql = "SELECT * FROM `inventory` WHERE upper(name) LIKE upper('%".$_REQUEST['assist']."%') and active = '1' OR upper(part_num) LIKE upper('%".$_REQUEST['assist']."%') and active = '1' ORDER BY `part_num` ASC ";
$result = mysql_query($search_sql);
if (mysql_num_rows($result) > 0) {
// output data of each row
while ($row = mysql_fetch_array($result)) {
echo '<li class="assist"><div id="assist"><input type="hidden" class="assist_id" value="'.$row['inv_id'].'">'.$row['part_num'].' | '.$row['name'].'</div></li>';
}
} else {
echo '<h2>There are no parts matching "'.$_REQUEST['assist'].'"</h2>';
}
}
它将结果放入此html中:
<ul id="assist-search-value"></ul>
我的JavaScript是
$('#assist-search-value li').click(function() {
var option = $(this).find('.assist_id').val();
alert(option);
});
但是,当我单击结果时,我仅获得列表中的第一个ID,而不是我想要的ID。
请不要在生产环境中使用它。
1)您正在使用不推荐使用的MySQL PHP库。改用mysqli或PDO。
2)您可以自由使用SQL Injection。至少,请使用mysql_real_escape_string。
3)HTML ID也必须是唯一的。
4)您还需要关闭<input>
在PHP中打开的标签。<input type="hidden" class="assist_id" value="'.$row['inv_id'].'"/>
但是,要回答您的问题-您可以为您的li's
with类连接一个处理程序assist
。由于它们是动态添加的,因此需要将处理程序添加到绑定到该元素时已经存在的元素。您可以使用on进行此操作。
$('#assist-search-value').on('click', 'li.assist', function() {
var productId = $(this).find("input.assist_id").val();
alert(productId);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句