【问题标题】:jQuery - Get first item from bubbling. Get bubble order or id when bubblingjQuery - 从冒泡中获取第一个项目。冒泡时获取冒泡顺序或id
【发布时间】:2012-11-19 12:36:45
【问题描述】:

我的最后一个问题在这里:Get last clicked item id 并且有很好的答案,但我仍然有问题。

我有这样的功能:

$(document).ready(function () {
      $("*").click(function () {             
          alert($(this).attr('id').toString());                
    });
});

在页面上我有这样的东西:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<script language="javascript" src="Scripts/jquery-1.4.1.js" type="text/javascript"><script>
<div id="div1">Some stuff
  <div id="div2">Some other stuff
  <asp:Button ID="Button1" runat="server" Text="Button" />        
    <div id="div3">More stuff
    <asp:Button ID="Button2" runat="server" Text="Button" />        
    </div>
 </div>        

当 Alertbox 出现时,我可以像这样存储单击项目的值:

$(document).ready(function () {
  $("*").click(function (e) {             
      alert($(this).attr('id').toString());  
      var value = $(this).attr('id').toString();                
      e.stopPropagation();  //Stop Propagation            
   });
});

但这就是问题所在。当我停止传播时,我的其他脚本不再触发。 我能以某种方式获得气泡订单或 ID 吗?我可以这样做吗?:

  $(document).ready(function () {
     $("*").click(function (e) {    
       if(e.target == this[0])
       {         
         alert($(this).attr('id').toString()); 
         var value = $(this)[0].attr('id').toString();             
       }
       //e.stopPropagation();  //I have to get first value from bubbling without stopPropagation     
 });
});

谢谢!

【问题讨论】:

  • 不带括号。 if(ev.target === this){

标签: jquery event-bubbling


【解决方案1】:

您可以尝试以下解决方案,这不是一个完美的解决方案,而且有点 hacky 但可以工作,您可以根据您的要求对其进行调整 - JSFIDDLE IS HERE

var clickArr = [], counter = 0;
$(document).ready(function () {
 $("*").click(function (e) {             

  if($(this).attr('id')) {      
  var val = $(this).attr('id').toString();
  clickArr[counter++] = val;
  }
  if(this.tagName == 'BODY') {
   val = clickArr[0];
   counter = 0;
   alert('result is ' + val);
  }
  //e.stopPropagation();  //Stop Propagation            
});
});​

希望对你有帮助!!

【讨论】:

  • 谢谢,它工作了,几乎没问题:P。当我将该值保存到某个标签文本并在其他按钮上尝试触发该保存的值(button1 或 button2)时,我必须按两次。如果我尝试从其他按钮提醒已保存的值,它会第一次显示空值,然后显示正确的值。
【解决方案2】:

顺便说一句,为什么不只是

$(document).ready(function(){
    var clicked;

    $('body').click(function(ev){
       clicked = ev.target.id;
    });
});

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 2017-03-11
    • 2022-10-21
    • 2013-10-09
    • 2014-08-26
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多