我想知道是否可以使用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,我有一个函数可以创建一个音频元素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)