2012-11-19 3 views
2

내 마지막 질문은 여기에 : Get last clicked item id 좋은 답변이 있었지만 여전히 문제가 있습니다.jQuery - 첫 번째 항목을 버블 링합니다.

이 같은 기능을 가지고 :

$(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  
}); 
}); 

감사? : 할 수있다!

+0

괄호없이. 'if (ev.target === this) {' –

답변

0

당신은 당신이 당신의 요구 사항에 따라이를 조정할 수 있으며, 다음과 같은 솔루션이 아닌 완벽한 솔루션 및 해키 작은 시도했지만 작동 할 수 있습니다 - 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    
}); 
});​ 

는 희망이 도움이!

+0

감사합니다. 거의 효과가있었습니다. P. 그 값을 일부 레이블 텍스트에 저장하고 다른 버튼에 저장된 값 (button1 또는 button2)으로 트리거하려고하면 두 번 눌러야합니다. 내가 다른 버튼에서 저장된 값을 알리려고하면 처음 비어있는 값을 표시 한 다음 올바른 값을 표시합니다. – Muno

0

BTW, 왜 그냥

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

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

나를 위해 일하지 않았다 :( – Muno