小编Jo *_*ngo的帖子

Jquery:元素上的事件的选择器,但不是它的子元素的选择器?

我想知道是否可以使用jquery选择器来绑定元素上的事件而不是它的子元素.实际上,我有两个div,一个在另一个,绝对位置,我想在两个div上检测相同的事件,但不是如果事件发生在顶级div的孩子(我的意思是,我想检测事件是否在顶部div的透明部分上,就好像它发生在下部div上一样.

例如,这里#desktop和#apps是一个在另一个上,具有相同的固定宽度和高度,我想检测一个事件:#destop,或#apps,但不是.stuff

HTML

<div id="desktop">

</div>
<div id="apps">
    <div class="stuff">
        test
    </div>
    <div class="stuff">
        test2
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

$("#desktop, #global:not(its_CHildren?)").mousemove(function (mouse){
    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果使用选择器无法做到这一点,我就会考虑做这样的事情,它可以令人满意地工作:

$("#desktop, #apps").mousemove(function(mouse){
    $("#global stuff").mousemove(function() {
        return false;
    });
    // ...
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-selectors

8
推荐指数
1
解决办法
3233
查看次数

如何在不附加DOM的情况下正确删除html5音频?

使用Javascript,我有一个函数可以创建一个音频元素createElement("audio"),并在不使用的情况下开始循环播放appendChild(),我的意思是不将它附加到DOM.创建的元素保存在变量中,我们称之为music1:

music = document.createElement("audio");
 music.addEventListener("loadeddata", function() {
 music.play();
});
music.setAttribute("src", music_Source);
Run Code Online (Sandbox Code Playgroud)

我想做的是,如果可能的话,使用相同的功能更改播放的音乐,并将元素存储在同一个变量中.

我在上面的代码之前做的是:

if(typeof(music) == "object") {
 music.pause();
 music = null;
}
Run Code Online (Sandbox Code Playgroud)

但是:如果我删除music.pause(),第一个音乐继续播放,第二个音乐同时开始播放,这让我觉得第一首音乐总是在文档/内存中的某个地方.而且,music = null似乎没用.我不想使用jQuery.

您是否有任何想法正确删除第一首音乐,删除元素等?

实际上,肯尼斯的评论是正确的,我试图改变src属性,而不是修改"音乐"变量(既不设置为null,也不重新创建元素),它似乎也有效.因此,对于记录:对于每个源更改,这里是功能:

if(typeof(music) != "object") {
  //audio element does not exist yet:
  music = document.createElement("audio");
  music.addEventListener("loadeddata", function() {
    music.play();
  });
}
music.setAttribute("src", music_Source);
Run Code Online (Sandbox Code Playgroud)

javascript audio html5

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

javascript ×2

audio ×1

html5 ×1

jquery ×1

jquery-selectors ×1