相关疑难解决方法(0)

如何阻止jQuery冒泡的事件?

如何在jQuery中停止自定义事件冒泡?

例如,我有这个代码:

$('.myclass').bind('amodaldestroy', function(){
    ....does something.....
})
Run Code Online (Sandbox Code Playgroud)

我怎么只允许在冒泡时找到的第一个元素上触发一次?我可以添加退货false吗?

$('.myclass').bind('amodaldestroy', function(){
     ....does something.....
    return false;
})
Run Code Online (Sandbox Code Playgroud)

javascript jquery javascript-events event-bubbling

30
推荐指数
4
解决办法
6万
查看次数

单击外部关闭div

我想通过单击其中的关闭链接通过单击该div之外的任何位置来隐藏div.

我正在尝试关注代码,它通过正确单击关闭链接打开并关闭div,但如果我有问题通过单击div之外的任何位置关闭它.

$(".link").click(function() {
  $(".popup").fadeIn(300);
}

);
$('.close').click(function() {
  $(".popup").fadeOut(300);
}

);
$('body').click(function() {
  if (!$(this.target).is('.popup')) {
    $(".popup").hide();
  }
}

);
Run Code Online (Sandbox Code Playgroud)
<div class="box">
  <a href="#" class="link">Open</a>
  <div class="popup">
    Hello world
    <a class="close" href="#">Close</a>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

演示: http ://jsfiddle.net/LxauG/

html javascript jquery

22
推荐指数
3
解决办法
9万
查看次数

无论添加事件的顺序如何,您如何强制首先运行javascript事件?

我有javascript,人们在他们的页面中包括.在我的javascript中,我有一个jQuery版本(1.8为了方便参考),它被划分为自己的命名空间,并通过全局变量引用(但不是"$"或"jQuery"的两个默认变量之一) .这允许用户在他们的页面中使用jQuery并且不会干扰我在函数内部执行的操作.

所以我们有一个页面已经有jQuery(1.4),并且一切正常,除了用户和我的代码都在元素上监听"点击"事件,他们的第一个,所以在他们这样做的少数事件上return false,jQuery停止传播,我的事件永远不会被触发.我需要先举办活动.用户希望我的onClick功能仍然有效.

现在我知道jQuery在内部通过_data()对象保持自己的事件顺序,通过它可以取消绑定现有事件,绑定我的事件,然后重新绑定现有事件,但这只适用于通过该实例绑定的对象的jQuery.我宁愿不盲目地寻找jQuery对象,希望冲突是由用户自己的jQuery版本引入的.毕竟当用户不通过jQuery绑定事件时会发生什么?试图操纵页面中现有的jQuery对象不是一个好的解决方案.

我知道,根据浏览器,他们使用addEventListener/removeEventListener或attachEvent/detachEvent.如果我只能获得已添加事件的列表,我可以按照我想要的顺序重新绑定它们,但我无法找到方法.通过chrome检查来查看DOM我看不到任何地方的onclick绑定(不在对象上,也不在窗口或文档上).

我正试着弄清楚jQuery绑定其监听的确切位置.为了能够控制自己事件的顺序,jQuery必须全面地听某个地方,然后开启它自己的功能吗?如果我能弄明白在哪,我可以深入了解如何确保我的活动始终是第一位的.或者也许有一些我在谷歌上找不到的JavaScript API.

有什么建议?

javascript jquery javascript-events

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

点击孩子时没有onclick

我有以下HTML代码:

<div class="outerElement">
    <div class="text">
     Lorem ipsum dolar sit amet
    </div>
    <div class="attachment">
      <!-- Image from youtube video here -->
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我在".outerElement"上有一个jQuery onclick事件但是,当我点击附件时,我不希望调用".outerElement"onclick事件,是否有某种方法可以防止这种情况或检查哪个元素被点击?

javascript jquery javascript-events

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

将click方法应用于外部div而不是内部div

在这个例子中,我希望在单击黑色外部div时触发警报,而不是在单击内部div中的任何内容时触发警报.

目前,当我单击内部按钮时,它会触发警报.

$("#outer").click(function() {
  alert("triggered");
});
Run Code Online (Sandbox Code Playgroud)
#outer{
  position: absolute;
  width: 100%;
  height: 100%;
  background-color: #000;
  display: flex;
  justify-content: center;
  align-items: center;
}
#inner{
  background-color: #fff;
width: 300px;
height: 300px;
  text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="outer">

  <div id="inner">
    <button>inner button</button>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想在内部div中没有​​任何东西可以触发警报.我该怎么做呢?

(由于某种原因,内部按钮没有显示在代码段中,这里是codepen链接:https://codepen.io/GuerrillaCoder/pen/Pmvmqx )

javascript jquery

11
推荐指数
3
解决办法
5868
查看次数

单击子级 onclick 时忽略父级 onclick,仅使用 Javascript

我试图做的一个很好的例子是,想想intragram。当您单击照片时,它会打开一个带有该照片和灰色背景的窗口。如果您单击灰色背景中的任意位置,图片将关闭,但是如果您单击图片,图片将保留在窗口中。

这就是我试图通过此实现的目标:

<div class="overlay_display_production_list_background" id="overlay_display_production_list_background_id" onclick="this.style.display = 'none'">
    <table class="table_production_availability" id="table_production_availability_id" onclick="this.parentElement.style.display = 'block'">
    </table>

</div>
Run Code Online (Sandbox Code Playgroud)

然而这不起作用。我如何让它工作,我只想要纯 java 脚本。

谢谢

html javascript css

6
推荐指数
1
解决办法
1419
查看次数

在jQuery中检测背景点击

说我有以下HTML:

<div>
  <span>span text</span> div text <span>some more text</span>
</div>
Run Code Online (Sandbox Code Playgroud)

我想这样做,以便当我单击span时将触发一些事件(例如,使文本变为粗体),这很容易:

$('span').click( ... )
Run Code Online (Sandbox Code Playgroud)

但是现在当我单击远离元素时,我希望触发另一个事件(例如,使文本变为正常粗细)。我需要以某种方式检测不在span元素内的单击。这与blur()事件非常相似,但是对于非INPUT元素。我不介意此点击是否仅在DIV元素内部而非页面的整个主体内检测到,顺便说一句。

我试图通过以下方法在非SPAN元素中触发事件:

$('div').click( ... ) // triggers in the span element
$('div').not('span').click( ... ) // still triggers in the span element
$('div').add('span').click( ... ) // triggers first from span, then div
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是在click事件中读取事件的目标。这是以这种方式实现的示例:

$('div').click(function(e) {
  if (e.target.nodeName != "span")
     ...
});
Run Code Online (Sandbox Code Playgroud)

我想知道是否还有更优雅的解决方案,例如blur()。

jquery mouseclick-event

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

javascript eventlistener中true和false的区别

我对eventlistener概念有疑问.在真假部分我怀疑的两个代码之间有什么区别.当我用练习代码中的第二个代码替换第一个代码时,没有发生变化.

a.addEventListener("click", modifyText, true);
a.addEventListener("click", modifyText, false);
Run Code Online (Sandbox Code Playgroud)

javascript

5
推荐指数
1
解决办法
3846
查看次数

忽略 JavaScript 中的函数?

mainDiv()当我单击 mainDiv 时,将调用该函数,当我单击 subDiv 时,将调用mainDiv()和函数。subDiv()

我只想subDiv()在单击 subDiv 时调用该函数。我怎样才能实现这个目标?

代码:

<div onclick="mainDiv()">
  show main div
  <div onclick="subDiv()">
    show sub div
  </div>
</div>
<script type="text/javascript">
  function  mainDiv(){
    alert("main div is clicked");
  }
  function  subDiv(){
    alert("sub div is clicked");
  }
</script>
Run Code Online (Sandbox Code Playgroud)

html javascript

5
推荐指数
1
解决办法
290
查看次数

仅在父级点击而非子级点击时触发事件

以以下代码为例:

<div id="parent">
  <div id="child">info goes here</div>
</div>

//javascript
function something{
//do something;}
//initial attempt
document.getElementById('parent').addEventListener('click',something);
//event capture
document.getElementById('parent').addEventListener('click',something,true);
Run Code Online (Sandbox Code Playgroud)

当我单击父元素时,我希望它执行某些操作,而当我单击子元素时,我希望它不执行任何操作。问题是,当我单击子元素时,它会触发“某些内容”。我认为这可能是事件冒泡,这样如果我单击子元素,事件就会从那里冒泡到父元素。于是我就想到了事件捕获,但这也导致了这个问题。

任何有关如何实现这一目标的意见或建议将不胜感激。

html javascript dom addeventlistener

4
推荐指数
2
解决办法
7664
查看次数