每次单击按钮时都会发生两个事件..但第三个事件仅在文档加载时更改
Two events changing every time button is clicked... but third event changes only on document load
此代码位于文档的底部,但如果删除$(document).ready(function()
行,它仍然会停止工作。前两个事件(动态填充".currentRhythm_A"answers"#currentLabelA")运行良好;每次我点击按钮,它们都会改变。然而,第三个事件——动态填充"#playA"——只有在我第一次单击按钮时才起作用。我怎么把最后一行编码错了?(我是这里的js新手。)非常感谢!
编辑:我应该明确指出,还有100个其他按钮,如"6.1"、"4.2"、"3.4"等,它们对应着不同的节奏#第一次点击按钮时,playA被正确填充——比如说,点击按钮6.1——但是,当我点击按钮4.2时,#playA保持填充有节奏6.1,而不是变为节奏4.2。Divs".currentRhythm_A"answers"currentLabelA"确实会随着按钮的点击而不断变化。只有#playA不会一直更改,而是保持第一次单击的按钮的值。
<div class="RM_rhythm">
<audio id="6.1" preload='none'>
<source class="straight" src='audio/6.1.mp3' type='audio/mpeg' /><source src='audio/6.1.ogg' type='audio/ogg' />
<source class="swing" src='audio/swing/6.1.mp3' type='audio/mpeg' /><source src='audio/swing/6.1.ogg' type='audio/ogg' />
</audio>
<button onclick="document.getElementById('6.1').play()">▶</button><a href="#" class="button">6-1</a><img src="images/RM-6.1.png" width="172" height="67" alt="6-1"></div>
<div class="currentSelection">
<div class="playFeatured"><audio id="playA" preload='none'></audio>
<button class="featuredAudio" onclick="document.getElementById('playA').play()">▶</button></div>
<div class="selectedLabelA" id="currentLabelA">A</div>
<div class="selectedRhythm currentRhythm_A" id="currentRhythm_A"></div>
</div>
$(document).ready(function() {
$('.button').on('click', function() {
var imagewanted = $(this).closest('.RM_rhythm').find('img').attr("src");
$('.currentRhythm_A').html("<img src='" + imagewanted + "' />");
var currentlabel = $(this).closest('.RM_rhythm').find('audio').attr("id");
$('#currentLabelA').html(currentlabel);
$('#playA').html("<source src='audio/" + currentlabel + ".mp3' type='audio/mpeg' /><source src='audio/" + currentlabel + ".ogg' type='audio/ogg' />");
});
});
好吧,jQuery代码运行得很好,它确实更改了audio
元素中的source
标记。问题是,当您想要动态更改音频源时,必须对audio
元素调用.load()
方法。所以你的代码必须是这样的:
$(document).ready(function() {
$('.button').on('click', function() {
var imagewanted = $(this).closest('.RM_rhythm').find('img').attr("src");
$('.currentRhythm_A').html("<img src='" + imagewanted + "' />");
var currentlabel = $(this).closest('.RM_rhythm').find('audio').attr("id");
$('#currentLabelA').html(currentlabel);
$('#playA').html("<source src='audio/" + currentlabel + ".mp3' type='audio/mpeg' /><source src='audio/" + currentlabel + ".ogg' type='audio/ogg' />");
$('#playA').load(); // note that line over here
});
});
相关文章:
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 如何使用PHP和JS级联三个下拉列表
- 灯光问题(使用三个.js)
- 在三个.js中创建球体(例如地球)的磁力线
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- 根据前两个下拉ID显示第三个下拉列表
- 防止两个默认功能发生,并同时触发第三个事件
- 文本框事件中的第三个字符
- 第三个是bean.fire事件中的第三个参数
- j查询具有三个事件的方法
- Jquery - 键入事件检查三个字段中的输入值
- 只有三个事件侦听器
- 三个.js触摸事件延迟300毫秒
- 每次单击按钮时都会发生两个事件..但第三个事件仅在文档加载时更改
- 触发“三个”的点击事件.元素
- 三个下拉事件改变不工作
- 如何在Jquery或jJavascript中将三个事件绑定到同一个函数
- MVC下拉列表级联-如何在第一个ddl选择更改时在第三个ddl上触发事件