无法在不将元素附加到页面的情况下使用jQuery访问属性

时间:2014-02-28 15:07:01

标签: javascript jquery html

有人可以解释为什么这不会改变音频文件src属性,我认为会这样吗?

var correctAudio = document.createElement('audio');
correctAudio.setAttribute('id', 'correctAudio');
correctAudio.setAttribute('src', 'sfx/correct/3.mp3');

function playCorrect(){
  var num = Math.floor((Math.random()*4)+1);
  num = num.toString();
  $('#correctAudio').attr('src','sfx/correct/'+num+'.mp3');
  correctAudio.play();
}
playCorrect();

仅在我致电document.body.appendChild(correctAudio);

时才有效

好像jQuery只能在元素附加到页面时访问该元素 - 这是正确的还是一个jQuery错误?

1 个答案:

答案 0 :(得分:1)

这是正确的行为。 jQuery在文档中搜索匹配的元素,该元素不是文档的一部分。

您可以使用jQuery将现有引用包装到DOM对象中(而不是在文档中搜索要包装的新引用):

 $(correctAudio)

...但是如果它不是文档的一部分,您可能会发现仍然无法播放它。