2017-09-04 57 views
0

我在做什么:构建onclick内部循环Javascript/jquery

动态构建一个附加到img标签的onclick事件并传递3个值。问题在于onclick在一个循环内,所以传递值的值根据它们在循环中的位置而变化。

我设法在一个不知如何打发另外两个

newElement.innerHTML = '<img id="'+ id + '" class="Videoimg" onclick="myFunction(this.id,\"" + VideoTitlePlayer + "\","' + VideodescPlayer + '")" src="' + thumbnail +'"><div id="VideoNames" class="VideoTitle">'+ title +'<br><div class="VideoDescription">' + desc + '</div></div>'; 

行,所以这是问题
此功能得到通过它连接到IMG ID传递的一个值,但即时通讯被称为打造的YouTube视频菜单

$.each(playlistVideoItems, function (index, item) 
      { 
      displayVideoResult(item.snippet, item.snippet.resourceId.videoId); 
      }); 

function displayVideoResult(videoSnippet, VideoPlay) 
{ var title = videoSnippet.title; 
var desc = videoSnippet.description; 
var thumbnail = videoSnippet.thumbnails.default.url; 
var id = VideoPlay; 

var newElement = document.createElement("div"); 
newElement.setAttribute("class", "VideoContainerCSS"); 
    // Set the value to what you want 
    newElement.innerHTML = '<img id="'+ id + '" class="Videoimg" onclick="myFunction(this.id)" src="' + thumbnail +'"><div id="VideoNames" class="VideoTitle">'+ title +'<br><div class="VideoDescription">' + desc + '</div></div>'; 

document.getElementById("results").appendChild(newElement); 
} 

我需要一些方法来建立视频ID,视频标题和视频desc的链接,所以当点击img链接时,它将全部3传递到运行YouTube API的功能

+0

也许你应该发布整个循环,所以我们可以理解你在说什么? – adeneo

回答

0

只使用数据ID,数据视频-title,data-other-prop等onclick="myFunction(this.dataset, ...

+0

试过这个,但是当onclick引用this.data-video-title和data-other-prop时它没有触发, –

+0

你试过这个数据集吗? –

+0

completly我的错我试图传递的价值观,采取了你的解决方案,而不是通过this.dataset我只是通过了整个对象** onclick =“myFunction(this.dataset)”**和作品, 谢谢很多 Seamus –

1

既然你有jQuery,你可以避免使用onclick并使用jQuery选择器和事件处理程序。

一旦你创建了元素,使用jQuery选择器来捕获它们。更好的是,在使用委托事件样式的容器上使用一个。

虽然您可能需要稍微更改标记以获取字符串。

$('.container').on('click', 'img', function(e) { 
    var $el = $(this); 
    myFunction(this.id, $el.find('.VideoTitle').text(), $el.find('. VideoDescription').text()); 
}); 

使用这种格式,您可以创建一个支持所有元素的事件处理程序。

+0

jquery不是我的第一语言哈哈,但这将如何让我建立与每个标题和desc菜单? –

+0

@SeamusClarke这不构建菜单。这仍然是分开发生的。我会更新我的答案以提供更多详细信息 –