我使用ng-repeat创建了预览播放列表,但预览图像上的点击功能无法正常工作。 这是我的HTML代码:
<div class="imgBox" ng-repeat="playlist in channelItems.slice(0,5)" ng-click="onPreviewClick($index)" id="imgFB{{$index}}">
<img id="preview" class="imgthumbnew" ng-src="{{playlist.ImageURL}}" data-item="{{playlist.MediaUrl}}" />
<span>
<label style="font-size: 12px; ">{{playlist.Title}}</label>
</span>
</div>
这是我的JS:
$(document).ready(function () {
//alert("clicked");
setTimeout(function () {
$(".imgthumbnew").click(function () {
$("#mediaPlayerDiv").show();
$("#thumbnail").hide();
$("#media-video").attr({
"src": $(this).data("item"),
"autoplay": "autoplay",
//"data-tag": "true"
})
})
}, 500);
});
答案 0 :(得分:3)
首先你使用angularjs和jQuery的方法是不正确的,使用正确的ng-click处理程序来注册你的点击处理程序
<div class="imgBox" ng-repeat="playlist in channelItems.slice(0,5)" ng-click="onPreviewClick($index)" id="imgFB{{$index}}">
<img id="preview" class="imgthumbnew" ng-src="{{playlist.ImageURL}}" ng-click="imgthumbnewclick()" />
<span>
<label style="font-size: 12px; ">{{playlist.Title}}</label>
</span>
</div>
然后
$scope.imgthumbnewclick = function (playlist) {
$("#mediaPlayerDiv").show();
$("#thumbnail").hide();
$("#media-video").attr({
"src": playlist.MediaUrl,
"autoplay": "autoplay",
//"data-tag": "true"
})
}
另一种解决方案是使用事件委托来支持动态元素
jQuery(function ($) {
$(document).on('click', '.imgthumbnew', function () {
$("#mediaPlayerDiv").show();
$("#thumbnail").hide();
$("#media-video").attr({
"src": $(this).data("item"),
"autoplay": "autoplay",
//"data-tag": "true"
})
})
});
答案 1 :(得分:2)
// you can call click event on id easily
$(document).ready(function () {
//alert("clicked");
setTimeout(function () {
$("#preview).click(function () { // use this line
//$(".imgthumbnew").click(function () {
$("#mediaPlayerDiv").show();
$("#thumbnail").hide();
$("#media-video").attr({
"src": $(this).data("item"),
"autoplay": "autoplay",
//"data-tag": "true"
})
})
}, 500);
});