在循环Javascript/jquery中构建onclick
我想做的是: 动态构建一个附加到img标记的onclick事件,并传递3个值。问题是onclick在循环中,因此传递的值的值根据它们在循环中的位置而变化 通过将一个值附加到img id,我成功地获得了一个传递值,但是我不知道如何传递另外两个值在循环Javascript/jquery中构建onclick,javascript,Javascript,我想做的是: 动态构建一个附加到img标记的onclick事件,并传递3个值。问题是onclick在循环中,因此传递的值的值根据它们在循环中的位置而变化 通过将一个值附加到img id,我成功地获得了一个传递值,但是我不知道如何传递另外两个值 newElement.innerHTML = '<img id="'+ id + '" class="Videoimg" onclick="myFunction(this.id,\"" + VideoTitlePlayer + "\","' + Vi
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>';
我需要一些方法将videoID、video Title和video desc构建到链接中,这样当单击img链接时,它会将所有3个都传递给运行youtube api的函数,只需使用数据id、数据视频标题、数据其他道具等。然后单击onclick=myFunctionthis.dataset,…,因为您有jQuery,可以避免使用onclick,而使用jQuery选择器和事件处理程序 创建元素后,使用jQuery选择器捕获它们。更好的是,在使用委托事件样式的容器上使用一个 不过,您可能需要稍微更改标记以获取字符串
$('.container').on('click', 'img', function(e) {
var $el = $(this);
myFunction(this.id, $el.find('.VideoTitle').text(), $el.find('. VideoDescription').text());
});
使用这种格式,您可以创建一个支持所有元素的事件处理程序。也许您应该发布整个循环,这样我们就可以理解您在说什么了?jquery不是我的第一语言lol,但这将如何允许我使用每个标题和描述构建菜单?@Seamuscarke这不会构建菜单。这仍然是分开进行的。我将更新我的答案以提供更多详细信息。我尝试过这个,但当onclick中引用this.data-video-title和data-other-prop时,它没有触发,完全是我的错,我试图传递值,接受了你的解决方案,而不是传递这个。dataset我只是传递了整个对象onclick=myFunctionthis.dataset并进行了处理,多谢谢谢默斯
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);
}
$('.container').on('click', 'img', function(e) {
var $el = $(this);
myFunction(this.id, $el.find('.VideoTitle').text(), $el.find('. VideoDescription').text());
});