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

发布于 2024-12-09 15:46:13 字数 891 浏览 0 评论 0原文

我用于电影搜索的 jQuery 自动完成插件。每部电影都有一个来自 IMDb 的 ID 的 ID。现在我解析该 ID 的方式来自 PHP,并包含在 class="imdbID" 的范围内。所以它看起来像这样:

<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?

谢谢

I jQuery autocomplete plugin for a movie search. Each movie gets an id of which is from IMDb's ID. Now the way I parse that ID is from PHP and is enclosed inside a span with class="imdbID". So it looks something likes this:

<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>

and goes on. Here's how it looks with a real example: http://www.screenr.com/aH0s

Now, I want to select a movie and alert that imdbID value.

If I use this method:

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

I get all the span's value like this:

So my question is, how can I get only the .imdbID of the selected autocomplete value?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

Oo萌小芽oO 2024-12-16 15:46:13

参考您关于 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
    }
});

Referencing your other question for the PHP code, I would do something like this (please take with a grain of salt, I do not know 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);

The idea being that you add imdbid as a property of the JSON payload you're sending to the client.

Then on the select event:

$("input").autocomplete({
    /* snip */
    select: function (event, ui) {
        alert(ui.item.imdbid); // <-- alert the imdbid property
    }
});
屋檐 2024-12-16 15:46:13

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

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

The callback receives two arguments function(event, ui). e.originalEvent should give you the click event that triggered the select event, along with its target ul.

$(e.originalEvent.target).find(".imdbID").text(); //Gets you the IMDB key
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文