jQuery运行点击函数一次,尽管相同的选择器
jQuery run click function once despite same selectors
好的,所以我有多个元素与类play-button
,我想运行一个函数点击。该函数应该只运行一次,它应该只运行在被点击的元素上。然而,在我当前的代码中,它在具有相同class
的每个元素上运行函数。我理解它为什么这样做,但想不出解决办法。什么好主意吗?
$( ".play-button" ).click(function() {
alert("hello")
});
这是html的一个示例:
<ul>
<li><button class="play-button">content</li>
<li><button class="play-button">content 2</li>
</ul>
更新-完整代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
<html>
<h1>Uploads</h1>
<ul id="results"></ul>
<iframe src="http://youtube.com/embed/MsGT2CczVTk?controls=0&iv_load_policy=3&rel=0&showinfo=0" width="560" height="315" frameborder="0" allowfullscreen=""></iframe>
</html>
<script>
//playlsit iD: UUtinbF-Q-fVthA0qrFQTgXQ
//api key: AIzaSyBt-q6kHra6D7ZKDv7zRKi458KiiVaKkvE
var channelName = 'caseyneistat';
$(document).ready(function() {
$.get (
"https://www.googleapis.com/youtube/v3/channels", {
part: 'contentDetails',
forUsername: channelName,
key: 'AIzaSyBt-q6kHra6D7ZKDv7zRKi458KiiVaKkvE'},
function (data) {
$.each(data.items, function(i, item) {
console.log(item);
pid = item.contentDetails.relatedPlaylists.uploads;
getVids(pid);
});
}
)
function getVids(pid) {
$.get (
"https://www.googleapis.com/youtube/v3/playlistItems", {
part: 'snippet',
maxResults: 10,
playlistId: pid,
key: 'AIzaSyBt-q6kHra6D7ZKDv7zRKi458KiiVaKkvE'},
function (data) {
var output;
$.each(data.items, function(i, item) {
console.log(item);
videoTitle = item.snippet.title;
videoId = item.snippet.resourceId.videoId;
output = '<li> <span>'+ videoTitle +'</span><br><div class="thumbnail-wrapper"><img src="http://img.youtube.com/vi/'+ videoId+'/mqdefault.jpg" class="thumbnail"><img src="http://www.radiobilly.com/wp-content/themes/radiobilly/img/play-white.png" class="play-button"></div><span id="videoId">'+ videoId +'</span></li>';
// <iframe src="http://youtube.com/embed/'+ videoId +'"></li>';
//Append to results list
$('#results').append(output);
$(".play-button").click(function() {
alert("hello");
$(".play-button").off("click");
});
});
}
)
}
});
</script>
<style>
ul {list-style: none; padding: 0px}
iframe {display: none;}
/* Player Styling */
.thumbnail {
max-width: 100%;
height: auto;
width: 100%;
}
.thumbnail-wrapper {
position: relative;
display: inline-block;
width: 100%;
}
.play-button {
position: absolute;
width: 50px;
height: 50px;
left: 0px;
margin-left: calc(50% - 25px);
margin-right: calc(50% - 25px);
top: calc(50% - 25px);
}
.ytp-chrome-top-buttons {display: none}
</style>
您可以使用.off()
方法在第一次单击后删除绑定:
$(".play-button").click(function() {
alert("hello");
$(".play-button").off("click");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
<li><button class="play-button">content</button></li>
<li><button class="play-button">content 2</button></li>
</ul>
它只运行一次,并且运行在您实际点击的元素上。你的标记缺少按钮的关闭标签,但如果你警告按钮的html,你可以看到它的工作。
小提琴
<ul>
<li><button class="play-button">content</button></li>
<li><button class="play-button">content 2</button></li>
</ul>
$( ".play-button" ).click(function() {
alert($(this).html());
});
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- Javascript事件发射器一次处理多个事件
- insertAfter只使用类选择器一次
- 如何使用replaceWith()一次替换多个选择器
- 带有类选择器的 jQuery 点击事件只触发一次
- 重置选择的一次表单的操作侦听器
- jQuery UI 对话框模式仅使用类选择器打开一次
- jQuery日期时间选择器第一次不工作
- 为什么我的Javascript全局变量只更新一次?jQuery最后一个子选择器错误
- 音频播放器-一次只播放一首曲目,不起作用
- 使用Javascript选择最后一次自动换行后的最后一行
- 每两次切换播放器一次JavaScript-AngularJS
- Javascript图像选择器:防止一次又一次地选择相同的图像
- 随机字符串选择器每次页面加载只执行一次
- Jquery一次将多个选择器推入一个对象
- 只有一次点击日期选择器td工作
- JQuery 时间选择器第二次不工作
- jQuery运行点击函数一次,尽管相同的选择器