2013-05-29 3 views
0

Я пытаюсь получить TD значения из ниже HTML, используя JQuery после нажатия на Редактировать ссылки и разделить его на 3 отдельные переменные, как показано нижеJquery - Таблица TD текст

company=Microsoft Technologies 
Period = 2011/3 - Current 
designation = Software Engineer 



<table summary="My Company" id="mylistbl"> 
    <thead> 
     <tr>  
      <th scope="col">Company</th> 
      <th scope="col">Action</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr object_type="999920113" object_id="872733"> 
      <td width="290">Microsoft Technologies<br><span style="font-size:11px; color:#555;">Period : 2011/3 - Current <br>Designation : Software Engineer</span> 
      </td> 
      <td><a href="#" title="Delete">Delete</a>/<a href="#" title="Edit">Edit</a> 
      </td> 
     </tr> 
    </tbody> 
</table> 



$('body').on('click','a[title="Edit"]', 
     function(){ 
      parObj=$(this).parent().parent(); 
      alert(parObj.children()[0].html); 
      return false; 
     }); 

Я думаю, что где-то в parObj.children() [0] .html я делаю неправильно, чтобы получить нужный текст

Вот JSFiddle для него

http://jsfiddle.net/FjXLp/

ответ

3

Вы можете сделать это:

$('body').on('click', 'a[title="Edit"]', function() { 
    parObj = $(this).closest('tr'); 
    alert(parObj.children('td:eq(0)').html()); 

    // Get the first part like 
    var main = parObj.children('td:eq(0)').html().split('<br>'); 
    var company = $.trim(main[0]); 
    console.log(company); // Microsoft Technologies 

    // Second part like 
    var Period = $.trim(main[1].replace('<span style="font-size:11px; color:#555;">','')); 
    console.log(Period); // Period : 2011/3 - Current 

    // Third part like 
    var designation = $.trim(main[2].replace('</span>','')); 
    console.log(designation); // Designation : Software Engineer 
}); 
+1

Спасибо, что вы сделали это за Palash. Это помогло мне. – Bujji

+0

Рад, что это помогло! –

2

Вы должны использовать eq(), который возвращает JQuery объект:

http://jsfiddle.net/FjXLp/1/

alert(parObj.children().eq(0).html()); 
+0

Спасибо обжаренные за предоставленную мне информацию о методе эк, +1 к нему – Bujji

2

Попробуйте это:

parObj.children().eq(0).html() 

Когда вы использовали parObj.children()[0], который дал вам ссылку на фактический элемент DOM, который является первым ребенком (или undefined, если детей не было), а элементы DOM не имеют имущества html. Они имеют свойство innerHTML, но обычным способом jQuery было бы использовать .eq(0), чтобы получить первый ребенок, завернутый в объект jQuery, а затем использовать метод jQuery .html().

+0

'parObj.children (0) .html() 'Это тоже работает, но я не уверен, почему кто-то один запустил это решение. –

+2

@Mr_Green - Я думаю, вы обнаружите, что это работает только случайно - '.children (0)' фактически не возвращает первый ребенок, он возвращает все из них, но '.html()' возвращает содержимое единственный первый элемент в множестве. (http://jsfiddle.net/cy4Ha/) – nnnnnn

+0

@Mr_Green .children ([селектор]). Но теперь я думаю, что это будет приятная функция, если мы сможем передать индекс как параметр методу children() –

1

Если это возможно, я бы рекомендовал Вам разместить каждые данные тега диапазона. После этого вы можете обработать его просто следующим образом:

<td width="290"> 
    <span>Microsoft Technologies</span><br/> 
    <span style="font-size:11px; color:#555;">Period : 2011/3 - Current</span><br/> 
    <span>Designation : Software Engineer</span> 
</td> 
$(document).ready(function() { 
    $('body').on('click', 'a[title="Edit"]', function() { 
     var spans = $(this).parents('tr').children('td:first').children('span'); 
     var company = spans[0].innerHTML; 
     var period = spans[1].innerHTML.split(':')[1]; 
     var designation = spans[2].innerHTML.split(':')[1]; 
     alert(company + ';' + period + ';' + designation); 
    }); 
}); 

http://jsfiddle.net/FjXLp/2/

+0

Спасибо Stano за это решение. Как вы сказали, я поговорю с командой и попрошу, чтобы они добавили отдельные теги разметки. Сначала Palash Mondal предоставил решение, поэтому я дал +1 для вас и поставил свой ответ как правильный. Еще раз спасибо – Bujji

+0

Спасибо Bujji, вы абсолютно правы, что решение Палаша хорошее. И я рад, если это тоже поможет. Приветствую – Stano

Смежные вопросы