我有一个搜索页面
<div class="">
<input id="search-input" type="text" class="input-medium search-query span4">
</div>
<div id="result">
</div>
<div id="result-template">
<div class="hide-item item" id="item">
<div style="float:left">
<img class="thumbnail" src="" alt="" />
</div>
<div id="name">
<p class="title"></p>
<p class="views"></p>
</div>
</div>
</div>
和 jQuery 作为
$(function(){
$('#search-input').live('keyup',function() {
var search_input = $(this).val();
var keyword = encodeURIComponent(search_input);
var yt_url = 'http://gdata.youtube.com/feeds/api/videos?q='+keyword+'&format=5&max-results=10&v=2&alt=jsonc';
$.ajax({
url: yt_url,
type: 'GET',
dataType: 'jsonp',
complete: function(xhr, textStatus) {
//called when complete
},
success: function(response, textStatus, xhr) {
if(response.data.items) {
var template = $('#item').clone();
$('#result').html(template);
$.each(response.data.items, function(i, data) {
console.log(data)
search_data = {
'id': data.id,
'title': data.title,
'views': data.viewCount,
'thumbnail': data.thumbnail['sqDefault'],
}
video_result_template(search_data);
});
} else {
// var template = $('#item').clone();
// $('#result').html(template);
}
},
error: function(xhr, textStatus, errorThrown) {
//called when there is an error
}
});
});
});
// filling out the search template
function video_result_template(data) {
var item = $('#item').clone();
item.removeClass('hide-item');
item.find('img').attr('src', data.thumbnail);
item.find('.title').html(data.title);
item.find('.views').html(data.views);
$('#item').attr('id', data.id);
item.addClass('view-item');
// $('#result').append(item).fadeIn(); // slow/fast?
$('#result').append(item).fadeIn('slow');
}
我在 div 上得到标题、视图、url 的结果。现在,当我单击 div 时,会触发以下 jQuery
$(function(){
$('.item').live('click', function(){
// alert(this.id);
console.log($(this));
var url = $('#video-frame').attr('src');
var new_url = url.replace(/embed\/[\w -]*/g, 'embed/' + this.id);
alert($('.title').html() + ',' + new_url);
$('#video-frame').attr('src', new_url);
});
});
这会提醒正确的标题,但 url(或 video_id 是列表中的下一个视频)。
当我从 Firefox 看到我的 html 时,我看到以下内容
<div id="result" style="display: block;">
<div id="lqT_dPApj9U" class="item view-item">
<div style="float: left;"><img alt="" src=
"http://i.ytimg.com/vi/S2nBBMbjS8w/default.jpg" class="thumbnail" /></div>
<div id="name">
<p class="title">Coke 2012 Commercial: "Catch" starring NE_Bear</p>
<p class="views">619167</p>
</div>
</div>
<div id="hKoB0MHVBvM" class="item view-item">
<div style="float: left;"><img alt="" src=
"http://i.ytimg.com/vi/lqT_dPApj9U/default.jpg" class="thumbnail" /></div>
<div id="name">
<p class="title">Coca-Cola Happiness Machine</p>
<p class="views">4791156</p>
</div>
</div>
<div id="item" class="item view-item">
<div style="float: left;"><img alt="" src=
"http://i.ytimg.com/vi/S2nBBMbjS8w/default.jpg" class="thumbnail" /></div>
<div id="name">
<p class="title">Coke 2012 Commercial: "Catch" starring NE_Bear</p>
<p class="views">619167</p>
</div>
</div>
</div>
- 如果看得清楚,第一个和最后一个 div 具有相同的数据元素
- 事实上不同之处在于最后一个 div 是第一个元素的副本
- 最后一个元素的 id="item" 无效(必须是视频 id)
问题 我该如何解决这个问题?
JSFiddle http://jsfiddle.net/hhimanshu/F5NHK/
必需
搜索后,单击任何视频 div,它必须提供正确的视频 ID 和标题
PS 在小提琴中单击列表没有做任何事情(不知道为什么,但它在我的系统上工作)