jQuery找不到音频源
我有一个Rails应用程序在单个页面上有几个音频元素。要更改其中之一的源代码,我使用jQuery选择器定位音频元素,然后使用.find(“source”)来获取子元素源元素。出于某种原因,这是行不通的。如果我有包含id =“change_me”的音频元素并包含源元素,则返回undefined。jQuery找不到音频源
下面是一个说明问题的jsFiddle。使用来自父级的find()失败,使用选择符“#change_me source”也失败,但引用源元素的id的选择器直接返回该元素。这是怎么回事?
缺少change_me
id selector,因为它是audio
元件的id
。
audio = $("#change_me");
source = $("#change_me source");
您已经使用了选择作为$("change_me")
这是element selector所以它会搜索与标签名称change_me
元素像<change_me></change_me>
演示:Fiddle
谢谢,漫漫长夜,我闷闷不乐的选择。但是,它仍然不在我的js.erb文件中,选择器是正确的。 – 2015-02-24 05:15:57
@JPlato你可以在小提琴 – 2015-02-24 05:17:22
Arun中重现问题,谢谢你的帮助。我从一个控制器更新方法返回时使用js.erb模板来修改我的页面的内容,但出于某种原因,我无法让它更改源元素的src属性(尝试使用attr('src' ,'...')和src ='...'最后,我放弃了,只是决定替换音频元素所在的整个div并且工作。 – 2015-02-25 06:15:59
它是一个错字。在你的代码中缺少#
:
$("#click_me").click(function(e) {
audio = $("change_me");
^==========> #
source = audio.find("source").first();
console.log(source[0]);
source = $("change_me source");
^=========> #
console.log(source[0]);
source = $("#change_me_source");
console.log(source[0]);
});
在我看来,最好的办法来解决这个问题,就是声明你source
变量的单击事件之外,所以你并不需要尽可能多的遍历DOM。通过这样做你也不需要全局变量。
source = $('audio').children('source');
$("#click_me").click(function(e) {
audio = $("change_me");
console.log(source[0]);
source = $("#change_me source");
console.log(source[0]);
source = $("#change_me_source");
console.log(source[0]);
});
是HTML一样摆弄? – EternalHour 2015-02-24 05:16:41