2010-06-01 16 views
8

में तत्व पर क्लिक किया मैं एक तत्व मैं पर क्लिक करें की आईडी प्राप्त करना चाहते हैं ID प्राप्त करें। मैं onclick तत्व में समारोह रखा, इस तरह:के समारोह

<a id="myid" class="first active" onclick="markActiveLink();" href="#home">Home</a> 

और यह है समारोह में:

function markActiveLink() { 
    alert($(this).attr("id")); 
} 

यह काम नहीं करता है, क्योंकि यह कहते हैं कि यह परिभाषित नहीं है। क्या यह वास्तव में आईडी के बारे में भूल जाता है, क्या मुझे इसे ऑनक्लिक में टाइप करना होगा?

उत्तर

13

प्रयास करें: onclick="markActiveLink(this);" और

function markActiveLink(el) { 
    alert($(el).attr("id")); 
} 
+1

+1। यह बात है। 'यह' अपना मूल दायरा रखता है। यदि आप इसे तत्व के अलावा कहीं और परिभाषित करते हैं, तो यह तत्व तत्व नहीं है। – Matchu

+0

यह बहुत अच्छा था। आपको मुझे आवश्यक उत्तर में मिला। हालांकि, बस एक बिंदु का उल्लेख करना चाहते हैं। चूंकि एल तत्व है, मुझे विश्वास है कि आपको बस इतना करना है कि अलर्ट (el.id) करें। इसे 2015 क्रोम ठीक काम करता है। शायद यह अतीत में ऐसा नहीं था - मुझे पता है कि यह एक पुरानी पोस्ट है। वर्तमान पाठकों की मदद के लिए बस इसका जिक्र करें। – raddevus

10

क्यों एक इनलाइन हैंडलर का उपयोग कर? अविभाज्य जेएस

$(document).ready(function(){ 
    $('#myid').bind('click', function(){ 
    alert($(this).attr('id')); 
    }); 
}); 
+1

+1। लेकिन यह एक बेहतर समाधान है। – Matchu

+1

आह, यह इससे निपटने का एक बेहतर तरीका है। – skerit

9

पर जाएं, आपको तत्व को फ़ंक्शन में पास करना होगा। जे एस ही होशियार नहीं है की तुलना में आप :)

एचटीएमएल:

<a id="myid" class="first active" onclick="markActiveLink(this);" href="#home">Home</a> 

js:

function markActiveLink(e) { 
    alert(e.id); 
} 
0

$(this) का उपयोग न करें, क्योंकि यह गलती से तत्व आप बाँध जोड़ा वापसी करता है। जब आप किसी आंतरिक तत्व पर क्लिक करते हैं, तो यह बाहरी तत्व भी देता है।

$("#outer").bind('click', function(e) { 

    if(e.target.id === "inner") 
    { 
     alert("you clicked the inner element"); 
    } 
    else 
    { 
     alert("you clicked the outer element"); 
    } 
}); 

आप एक बेला यहां पा सकते हैं:

<div id="outer"> 
    <div id="inner"> 

    </div> 
</div> 

बेहतर होगा कि तुम निम्नलिखित उपस्थिति का उपयोग करें, http://jsfiddle.net/vqab7jdo/1/

0

मैं सभी तरीकों की कोशिश लगभग 2 घंटे खर्च और अंत में सबसे अच्छा रास्ता मिल रहा इसे आजमाएं:

< div onclick="div_Clicked(this.id)" id="some"/>

 function div_Clicked(itemName) { alert(itemName); }
संबंधित मुद्दे