2013-05-29 3 views
0

Как бы я взял захват предыдущего элемента td в таблице, чтобы изменить его значение text значение внутри вызова Ajax?получить предыдущий элемент td для манипулирования в вызове Ajax

Это то, что у меня есть до сих пор. Я думаю, что я правильно захватил элемент td и поместил его в переменную, однако я не могу получить предупреждение о появлении текста в элементе td, который я пытаюсь изменить, и я не могу изменить текст, м пытается сделать.

function ChangeStatus(id) { 
     var td = $(this).parent('td').prev(); 
     $.ajax({ 
      type: 'GET', 
      url: '@Url.Action("changeStatus","AgentTransmission")', 
      data: { id: id }, 
      dataType: 'json', 
      success: function (data) { 
       td.empty(); 
       td.html("Hold"); 
      } 
     }); 
    } 

Редактировать

Вот два td элементы, я работаю с. Когда пользователь нажимает ссылку Hold с событием ChangeStatus()onclick, я хочу иметь возможность изменить текст предыдущего элемента с Waiting на Hold.

<td> 
Waiting 
</td> 
<td> 
<a href="/AgentTransmission/Details/17">Details</a>   
    <span> | </span> 
    <a href="javascript:void(0)" onclick="ChangeStatus(17)" >Hold</a> 
</td> 
<td align=center id=17> 
</td> 
+1

Можете ли вы опубликовать визуализированную структуру таблиц HTML? На данный момент мы не можем сказать вам, есть ли у вас правильный 'td'. – tymeJV

+0

Зачем использовать empty(), если вы используете html()? html() заменить любой контент –

+0

Просто отправил HTML, thx! – NealR

ответ

0

Во-первых, parent() получает только первого родителя, если вызывающий объект глубже в dom, вы его не получите. Вы должны использовать родитель(), но я бы рекомендовал использовать классы вместо имен тегов, что-то вроде этого:

$(this).parents('td.myClass').prev(); 

Вы также можете использовать:

console.log(myString); 

вместо предупреждений, вы можете увидеть результат в консоли, используя хром или поджигатель в светлячок

Надеется, что это помогает

+0

Как изменить значение внутри переменной 'td'? Ни одна из них не работает: 'td.empyt()' или 'td.html ('Hold')' – NealR

+0

Поскольку я не использовал классы, удаление 'td.myClass' отлично поработало. Благодаря! – NealR

0

Попробуйте получать td так:

var td = $(this).closest('td'); 
+0

Не могу заставить это работать. это работает, если элемент 'td' не является последним в' tr'? – NealR

+0

lol на самом деле это работает .. но он захватывает элемент 'td' источника. Итак, в основном этот код: 'var td = $ (this) .closest ('td');' в сочетании с этим 'td.html ('Hold');' помещает текст 'Hold' в элемент' td', который вызывая функцию, а не предыдущую. – NealR

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