2010-07-06 15 views
13

मैं jQuery datatable पर एक समारोह, कि 1 और एक क्लिक किया पंक्ति के 4 स्तंभएक पंक्ति से JQuery DataTable सेल क्लिक

मैं इस उदाहरण का अनुसरण कर रहा हूँ रिटर्न लागू करने के लिए कोशिश कर रहा हूँ, जो मुझे एक क्लिक किए गए हेरफेर करने के लिए अनुमति देता है पंक्ति http://datatables.net/examples/api/select_single_row.html

सोच है कि मैं इस हैंडलर को बदल सकते हैं पढ़ने सेल मूल्य प्रक्रियाओं करते हैं और अपने खुद के तर्क पर मान का उपयोग करने

/* Add a click handler to the rows - this could be used as a callback */ 
$("#example tbody").click(function(event) { 
    $(oTable.fnSettings().aoData).each(function(){ 
     $(this.nTr).removeClass('row_selected'); 
    }); 
    $(event.target.parentNode).addClass('row_selected'); 
}); 

मैं भी इस छोटे से कोड खंड fr के साथ खत्म हो गया आ गए हैं ओम DataTable मंच http://datatables.net/forums/comments.php?DiscussionID=1384&page=1#Item_0

$('#example tbody tr').click(function() { 
    // Alert the contents of an element in a SPAN in the first TD 
    alert($('td:eq(0) span', this).html()); 
}); 

मैं किसी भी सूचक तो मैं 1 और क्लिक किया क्षेत्र के 4 स्तंभ प्राप्त कर सकते हैं हो सकता है?

अगले भाग मैं ऊपर हल, धन्यवाद निक

लेकिन मैं समस्या के अगले भाग की है। जब मैं मेज init मैं

/* Init the table */ 
    oTable = $('#filetable').dataTable({ 
     "bProcessing": true, 
     "bServerSide": true, 
     "sAjaxSource": "/crvWeb/jsonFileList.do", 
     "fnServerData": function (sSource, aoData, fnCallback) { 
      $.ajax({ 
       "dataType": 'json', 
       "type": "POST", 
       "url": sSource, 
       "data": aoData, 
       "success": fnCallback 
      }); 
     } 
    }); 

मेरी सर्वलेट एक निर्देशिका अनुरोध पैरामीटर लेता है और json प्रतिक्रिया के रूप में datatable के लिए एक सूची देता है का उपयोग करें।

/crvWeb/jsonFileList.do 

मैं पोस्ट अनुरोध के साथ serlvet प्रतिक्रिया कैसे जोड़ और प्राप्त कर सकता हूं ताकि मैं अपनी तालिका अपडेट कर सकूं? अगर मैं अपने कोड सही तरीके से पढ़ रहा हूँ

उत्तर

25

आप .delegate() सबसे आसान यहां इस तरह से उपयोग कर सकते हैं,:

$("#example tbody").delegate("tr", "click", function() { 
    var firstCellText = $("td:first", this).text(); 
    var fourthCellText = $("td:eq(3)", this).text(); 
}); 

You can try out a demo here

साथ .delegate()this के बाद से उस क्लिक हम संभाल रहे है, चीजों को काफ़ी क्लीनर बनाने <tr> को संदर्भित करता है .. और यह अभी भी <tbody> स्तर पर केवल एक ईवेंट हैंडलर है, प्रति <tr> पर नहीं।

+0

एक और अनुवर्ती प्रश्न। अगर मैं इसे अद्यतन करने के लिए ग्रिड में मान को पास करना चाहता हूं, तो मुझे फ्लाई पर टेबल अपडेट करने के लिए पोस्ट के मज़े का उपयोग करने के लिए इसे कैसे करना चाहिए? – nokheat

+0

@ नोकीट - आपका मतलब क्या है? यदि आप मूल्यों के बारे में कुछ और बता सकते हैं कि मूल्य कहां से आता है और जाता है तो मैं मदद कर सकता हूं ... मुझे रात के लिए दुर्घटनाग्रस्त होना है, लेकिन यहां जवाब दें और मैं इसे सुबह में देखूंगा :) –

+0

मुझे कुछ कोड सेगमेंट दिखाएं, इसलिए कृपया मेरे नए संपादन – nokheat

0

यह चाल करना चाहिए:

$("tr.row_selected td:nth-child(1), tr.row_selected td:nth-child(4)"); 

यह वर्ग row_selected के साथ सभी टीआर तत्वों के पहले और चौथे बच्चे को वापस आ जाएगी।

+0

मैं अपना कोड और आपका समाधान देख रहा हूं हालांकि मैं अभी भी इसके आसपास काम करने की कोशिश कर रहा हूं। मुख्य कनवर्ट है, क्या मैं वास्तव में हैंडलर इनपुट से संदर्भ ले सकता हूं? $ ("# उदाहरण tbody") की तरह, और सेल के संदर्भ प्राप्त करने के लिए इस पहचानकर्ता का उपयोग करें और इसलिए इसका मूल्य? – nokheat

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