2

我的最后一个问题在这里:获取最后点击的项目 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     
 });
});

谢谢!

4

2 回答 2

0

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

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

    $('body').click(function(ev){
       clicked = ev.target.id;
    });
});
于 2012-11-19T14:51:21.220 回答
0

您可以尝试以下解决方案,这不是一个完美的解决方案,而且有点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            
});
});​

希望能帮助到你 !!

于 2012-11-19T14:20:30.593 回答