2010-04-24 21 views
19

पर कॉल करता है मुझे table मिल गया है।Jquery पंक्ति के बाद तालिका पंक्ति जोड़ें जो jquery

<table id="servers" ...> 
... 
{section name=i loop=$ownsites} 
<tr id="site_id_{$ownsites[i].id}"> 
... 
<td>{$ownsites[i].phone}</td> 
<td class="icon"><a id="{$ownsites[i].id}" onClick="return makedeleterow(this.getAttribute('id'));" ...></a></td> 
</tr>  
{/section} 
<tbody> 
</table> 

और यह जावास्क्रिप्ट।

<script type="text/javascript"> 
function makedeleterow(id) 
    { 
     $('#delete').remove(); 
     $('#servers').append($(document.createElement("tr")).attr({id: "delete"})); 
     $('#delete').append($(document.createElement("td")).attr({colspan: "9", id: "deleter"})); 
     $('#deleter').text('Biztosan törölni szeretnéd ezt a weblapod?'); 
     $('#deleter').append($(document.createElement("input")).attr({type: "submit", id: id, onClick: "return truedeleterow(this.getAttribute('id'))"})); 
     $('#deleter').append($(document.createElement("input")).attr({type: "hidden", name: "website_del", value: id})); 
    } 
</script> 

यह ठीक काम कर रहा है, यह table के पिछले tr के बाद एक tr बनाता है और इसे करने के लिए जानकारी देता है, और हटाने समारोह भी ठीक काम करता है।

लेकिन मैं इस संलग्न बाद करना चाहते हैं tr (tdclass="icon" के साथ) जो स्क्रिप्ट बुला रहा है। मैं यह कैसे कर सकता हूँ?

+0

मुझे लगता है कि मैं आपका अनुसरण नहीं कर रहा हूँ। मुझे लगता है .next() या अगला ('tr') का उपयोग करें। पीएस: और आपको एक बार फिर तत्वों को और अधिक संशोधित करने की आवश्यकता नहीं है। आप $ ('') द्वारा $ (document.createElement ('tr')) को प्रतिस्थापित कर सकते हैं। .attr ('id', 'delete') – meo

+1

हां, @meo। $ ("# डिलीटर") के बजाए कई बार, बस var deleter = $ ("# deleter") करें; फिर प्रत्येक बार चर संदर्भ का उपयोग करें। – Geoff

+0

fi '$ ('# site_id _' + id) के साथ ऐसा करें। बाद()। संलग्न करें ($ (document.createElement (" tr "))। Attr ({id:" delete "}); 'या' अगला() '' td class = "icon" के बाद यह 'tr' के अंदर संलग्न होगा। –

उत्तर

33

आप किसी अन्य तत्व के बाद कुछ सामग्री जोड़ने के लिए jQuery में .after() फ़ंक्शन का उपयोग कर सकते हैं।

तो बजाय

$("servers").append(...); 

आप

$("#" + id +).closest("tr").after(...); 

का प्रयोग करेंगे या आप भी

$(...).insertAfter($("#" + id).closest("tr")); 

जो अनिवार्य रूप से बराबर है इस्तेमाल कर सकते हैं।

पूर्ण विवरण के लिए http://api.jquery.com/after/ देखें।

+0

'$ ('# site_id _' + id) .after()। संलग्न करें (''); 'अभी भी काम नहीं करें। कोई अन्य विचार? –

+0

मुझे लगता है कि आपको बाद में (0) में अपना डालना होगा और संलग्न करना होगा()। –

+3

हाँ, बाद में विधि के तर्क के रूप में सामग्री जोड़ें, संलग्न विधि की कोई आवश्यकता नहीं है। कुछ ऐसा: var newTr = $ (""); $ ('# site_id _' + id)। बाद (newTr); newTr.append (someChildOfTr) .append (someOtherChildOfTr); – Geoff

0

interst टीआर आईडी कोशिश तो onclick = "xyz()"

कुछ इस तरह:

<tr id="" onclick="xyz()"><td></td><td></td></tr> 
<script> 
    function xyz() 
    { 
    var newrow = "<tr><td>data1</td><td>data1</td></tr>";   
    $("#tr_id").after(newrow); 
    } 
</script> 
संबंधित मुद्दे