2013-10-28 8 views
14

तो मैं जावास्क्रिप्ट और jQuery का उपयोग कर एक टेबल बना रहा हूं, और मुझे यह चाहिए कि जब आप तालिका की पहली पंक्ति पर टीडी पर क्लिक करें, तो उस कॉलम में शेष टीडी ड्रॉप हो जाएंगे। मुझे अपना कोड दिखाकर इसे समझाने की कोशिश करें। यहाँ मेरी जावास्क्रिप्ट है:jQuery .click फ़ंक्शन < td > टैग पर काम नहीं कर रहा है?

function createTr (heights) { //heights is just an array of words 
    for (var h=0; h<heights.length; h++) { 
     var theTr = $("<tr>", { id: "rowNumber" + h}); 
     for (var i=0; i<heights.length-3; i++) { 
      theTr.append($("<td>", { "class": "row"+h + " column"+i, 
            html: heights[h][i] 
            })); 
     } 
     $('#newTable').append(theTr); // append <tr id='rowNumber0'> to the table (#newTable), which is written in the html 
    } 
} 

यह मूलतः टीडी के बनाता है और प्रत्येक टीडी इस प्रारूप

<td class="rowh columni"> 

मैं यह इतना चाहते हैं के समान है कि सभी टीडी के .row0 में है और यदि आप टीडी के लिए छोड़कर छिपे हुए हैं .row0 .columni में td पर क्लिक करें, फिर सभी td में .columni दिखाई देते हैं। पैरामीटर 'ऊंचाइयों' एक सरणी सिर्फ है, उदाहरण के लिए, यह

var heights = [['headerOne', 'headerTwo'], ['someTd', 'anotherTd'],]; 

हो सकता है और यह उन शब्दों की एक तालिका बनाने हैं, headerOne और headerTwo पहली पंक्ति में होगा, someTd और anotherTd में होगा दूसरी कतार।

अब

, जब मैं की तरह मेरे document.ready समारोह में इतना

function animation() { 
    $('td').click(function() { 
     alert('clicked'); 
    }); 
} 

की तरह एक क्लिक समारोह जोड़ने और फिर फोन यह करने की कोशिश तो

$(document).ready(function() { 

    createTr(heights); 
    animation(); 
}); 

यह जब मैं कुछ नहीं करता एक टीडी पर क्लिक करें। कैसे?

उत्तर

30

http://api.jquery.com/on/

आप तत्वों का निर्माण कर रहे के बाद के बाद डोम बनाया गया है। गतिशील रूप से बनाए गए सटीक तत्व को प्राप्त करने के लिए "चालू" चयनकर्ता का उपयोग करें।

यूआरएल से:

$("#newTable").on("click", "td", function() { 
    alert($(this).text()); 
    }); 
+0

एचएम आप #newTabletbody से क्या मतलब है पसंद है? मैंने $ ("# newTable") की कोशिश की। और यह काम नहीं किया। – user2719875

+0

क्षमा करें कि एक टाइपो था। आप $ ('body') को आजमा सकते हैं। ('अगर क्लिक नहीं होता है तो क्लिक करें। – Churchill

+0

एचएम $ (' बॉडी ')। (' क्लिक 'भी काम नहीं करता है। मैं सभी कोड डाल रहा हूं एनीमेशन नामक फ़ंक्शन में, जैसे - फ़ंक्शन एनीमेशन() {$ ('body')। ('क्लिक', 'td', फ़ंक्शन() {अलर्ट ('क्लिक किया गया');});} - लेकिन यह अभी भी काम नहीं कर रहा है। – user2719875

3

इस तरह का प्रयास करें:

$('body').on('click','td', function() { 
     alert('clicked'); 
    }); 
+0

एचएम) काम नहीं करता है। – user2719875

+1

यदि आप अतिरिक्त '(' के बाद ' td 'तो यह केवल तभी काम करता है जब मैं इसे $ (दस्तावेज़) से पहले रखता हूं। पहले से ही (फ़ंक्शन। – user2719875

+0

ओह हाँ !! इसे इंगित करने के लिए धन्यवाद :) –

1

कोशिश इस

function animation() { 
    $(document).on('click','td',function() { 
    alert('clicked'); 
    }); 
} 
+0

क्या' td 'के बाद वह अतिरिक्त ब्रैकेट होना चाहिए, (? क्योंकि उत्तर देने वाले दूसरे उपयोगकर्ता ने वही काम किया और उस ब्रैकेट को बंद नहीं किया जो कि कार्य के ठीक पहले 'td' के बाद दिखाई देता है। – user2719875

+0

क्षमा करें कि एक टाइपो –

+1

था लेकिन ठीक है यह काम करता है और दूसरा उत्तर ($ ('body')।) केवल तभी काम करता है जब मैं इसे $ (दस्तावेज़) से पहले रखता हूं .ready (function ..... धन्यवाद। – user2719875

0

इस कोड को बस ठीक काम करता है:

$(document).ready(function(){ 
    $("td").click(function(){ 
     if(this.title!=""){ 
      alert(this.title); 
     } 
    }); 
}); 
0

मैं this.-

$("#table tr").click(function(){ 
    console.log(this); 
}); 
संबंधित मुद्दे