jQuery自动完成。在选择时,提醒其值在建议中

时间:2011-10-12 19:38:35

标签: jquery jquery-ui jquery-ui-autocomplete

我是用于电影搜索的jQuery自动完成插件。每部电影的ID都来自IMDb的ID。现在,我解析该ID的方式来自PHP,并且包含在带有class =“imdbID”的span中。所以它看起来像这样:

<li>Movie title 1<span class="imdbID">tt345813</span></li>
<li>Movie title 1<span class="imdbID">tt346413</span></li>
<li>Movie title 1<span class="imdbID">tt789675</span></li>
<li>Movie title 1<span class="imdbID">tt185858</span></li>

继续。以下是一个真实示例的外观:http://www.screenr.com/aH0s

现在,我想选择一部电影并提醒imdbID值。

如果我使用这种方法:

select:function(a,b){
        var bbbb = $(".imdbID").text();
        alert(bbbb);
}

我得到了所有跨度的值:

所以我的问题是,如何才能获得所选自动完成值的.imdbID?

谢谢

2 个答案:

答案 0 :(得分:2)

引用你的PHP代码的其他问题,我会做这样的事情(请带上一点点,我不知道PHP ):

$tmdb = new TMDb($api_key);
$json = json_decode($tmdb->searchMovie($_GET['term']));
$response = array();
$i=0;
foreach($json as $movie){
    if(!$movie->imdb_id || $movie->adult) continue;
    if($i >= 6) break;
    $response[$i]['value'] = $movie->name;
    $response[$i]['label'] = $movie->name . ' <small>(' . date('Y',strtotime($movie->released)).')</small><span><span> (' . $movie->imdb_id . ')';
    $response[$i]['imdbid'] = $movie->imdb_id;
    $i++;
}
echo json_encode($response);

您的想法是将imdbid添加为您要发送给客户端的JSON有效内容的属性。

然后在选择事件上:

$("input").autocomplete({
    /* snip */
    select: function (event, ui) {
        alert(ui.item.imdbid); // <-- alert the imdbid property
    }
});

答案 1 :(得分:1)

回调接收两个参数function(event, ui)。 e.originalEvent应该为您提供触发select事件的click事件及其目标ul

$(e.originalEvent.target).find(".imdbID").text(); //Gets you the IMDB key