我有一个搜索函数,它在keyup上调用php文件。现在在JQuery中,我有一个onClick函数,当你从同一个JSON调用中单击一个div时,它会发出警报,也许从下面的代码中更容易理解:
<?php
$Connect = new mysqli("localhost", "root", "", "Data");
$Val = $_POST['Val'];
if($Val)
{
$Search = 'SELECT * FROM Users WHERE ';
$Term = explode(" ", $Val);
foreach($Term as $Key)
{
$I = 0;
$I++;
if($I == 1)
{
$Search .= 'Username LIKE "'.$Key.'%" LIMIT 0, 10 ';
}
else
{
$Search .= 'OR Username LIKE "'.$Key.'%" LIMIT 0, 10 ';
}
}
if($Result = $Connect->query($Search))
{
while($Row = $Result->fetch_assoc())
{
$User = $Row['Username'];
$USearch['S'][] = '<div class="Result"><label class="TText" style="cursor:pointer;">' . $User . '</label></div>';
}
}
}
echo json_encode($USearch);
?>
现在,正如您所看到的,一旦用户在一个框中键入,就会显示一个div,显示用户的所有LIKE记录,一旦单击该div,就不会发生任何事情。
$('.Result').click(function()
{
alert('Hi');
});
当ajax调用返回成功状态时,您可以使用例如jquery绑定方法。(请参阅此处了解更多信息http://api.jquery.com/bind/)
function myAjaxFunct(val){
$.ajax(
{
type: "POST",
url: myPhpFile.php,
datatype: "jsonp",
data: {val: val},
success: function (result) {
$("#jsonResultDisplay").text(result);
$('.Result').bind('click', function() {
alert('hi');
});
}
});
}
您正在动态创建元素,这就是它不起作用的原因。
使用on()
方法。
查看示例:
http://jsfiddle.net/pZQ8T/