2012-04-05 10 views
8

मैं मूल रूप से event.target से लक्ष्य तत्व प्राप्त करने का प्रयास कर रहा हूं और यदि समान प्रक्रिया नहीं है। मैं नीचे काम करने के लिए कैसे काम कर सकता हूं?तत्व प्राप्त करने के लिए event.target का उपयोग

$(document).ready(function(){ 
    $(document).click(function(event) { 

     if(event.target!='#contents') { //If clicked element is not div #contents show alert .. //How can i achieve this ? 
     alert(".."); 
     } 

    }); 
}); 

उत्तर

12

उपयोग

//If clicked element id is not contents 
    if(event.target.id !== 'contents') { 
    alert(".."); 
    } 

संपादित करें - संरचना अपनी टिप्पणी उपयोग की है कि है यदि:

if($(event.target).closest('div#contents').length === 0){ 
    alert('there is no div with id === "contents" in the ancestors of the clicked li'); 
    } 

संपादित करें 2 - मेरे कोड की व्याख्या। आप इस मार्कअप

<div id="contents"><ul><li>Item1</li><li>Item2</li></ul></div> 

है, तो इस कोड का मतलब है

//event.target is a DOM element, so wrap it into a jQuery object 
$(event.target) 
     .closest('div#contents')//find a div element going up the dom tree. 
           //This method returns a jQuery collection that it's 
           //empty if the div is not found 
     .length //the collection has a length 
       //property that is equal to the number of found elements 
+1

+1 @ user1184100: 'event.target' एक वस्तु, न कोई स्ट्रिंग है। इसकी ** 'आईडी' ** एक स्ट्रिंग है। –

+0

जब मैं एक console.log (event.target) करता हूं; यह div का li देता है .. लेकिन div id #contents कोड से ऊपर नहीं काम करेगा :( संरचना इस तरह की है

  • Item1
  • Item2
user1184100

+0

@ user1184100 मैंने आपके उत्तर की जांच संपादित की है यदि यह आपके लिए काम करता है और आपके प्रश्न में अपना मार्कअप पोस्ट करता है –

संबंधित मुद्दे