ChernovDmitry
@ChernovDmitry

Объясните пожалуйста почему данный код не работает?

Представьте что в админке есть html table с колонками: имя пользователя, еще что-то и кнопка «Забанить». При нажатии на кнопку посылается ajax запрос и по идее текст кнопки меняется на «Разбанить». Это как раз то чего я добиться не могу (Т.е. надпись на кнопке не меняется). Обьясните пожалуйста, что я делаю не так.



Utils.bahn = function( index ) {<br>
	// table bahn_list select<br>
	var row = $('#bahn_list tr').eq( index + 1 )[0];<br>
	var name = row.cells[0].innerHTML;<br>
	<br>
	var input = $( row.cells[3].innerHTML );<br>
	<br>
	if( input.val() == "Зобанить" ) {<br>
		Utils.sendPackage( Utils.createBahnPackage(name) );<br>
		input.val( "Розбанить" );<br>
		input.attr('value', 'Розбанить');<br>
	}<br>
	else if( input.val() == "Розбанить" ) {<br>
		Utils.sendPackage( Utils.createUnBahnPackage(name) );<br>
		input.val( "Зобанить" );<br>
	}<br>
}<br>
  • Вопрос задан
  • 3267 просмотров
Решения вопроса 1
Не работает потому, что
var input = $( row.cells[3].innerHTML );

не возвратит текущий объект (видимо у вас там
<input type="button">
лежит), а создаст новый, которому и поменяет значение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tarzan82
@tarzan82
На мой взгляд, раз уж используете jquery, то не нужно мешать его с нативным кодом.

Ваш кусок

var row = $('#bahn_list tr').eq( index + 1 )[0];
var name = row.cells[0].innerHTML;
var input = $( row.cells[3].innerHTML );

можно заменить на

var row = $('#bahn_list tr').eq(index + 1);
var name = $('td:first', row).html();
var input = $('td:eq(3) > input', row);


И еще, зачем этот дубль?

input.val( "Розбанить" );
input.attr('value', 'Розбанить');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы