Добрый день.
Есть объект:
var data = {
Dashes: ["dashes", true, function(tr)
{
var isValid = true, cells = tr.find("td");
cells.each(function() { if($(this).text() !== '—' && $(this).text() !== '') { return isValid = false; } });
return isValid;
}],
Matched: ["matched", true, function(tr)
{
var isValid = true, cells = tr.find("td"), text = cells.last().text();
cells.each(function() { if($(this).text() !== '' && ($(this).text() === '—' || $(this).text() !== text)) { return isValid = false; } });
return isValid;
}],
Mismatched: ["mismatched", true, function(tr)
{
var isValid = false, cells = tr.find("td"), text = cells.last().text();
cells.each(function() { if($(this).text() !== text && $(this).text() !== '') { isValid = true; return false; } });
return isValid;
}]
};
И есть код для инициализации в цикле:
for(var key in data)
{
$("body").on("click", "#clb-hide" + key, function()
{
if($("#clb-compareTable tbody tr").is(".clb-ct-" + data[key][0])) $("#clb-compareTable tbody tr.clb-ct-" + data[key][0]).hide();
else
{
$("#clb-compareTable tbody tr:not([class])").each(function()
{
if(data[key][2]($(this)))
$(this).addClass("clb-ct-" + data[key][0]).hide();
});
}
$("#clb-hide" + key).hide(0,function() { $("#clb-show" + key).show(); alert($("#clb-show" + key).attr("id")); });
isHidden = true;
return false;
});
$("body").on("click", "#clb-show" + key, function()
{
$("#clb-compareTable tbody tr.clb-ct-" + data[key][0]).show();
$("#clb-show" + key).hide(0,function() { $("#clb-hide" + key).show(); });
return false;
});
}
Сделано, чтобы не городить однотипный три раза. Смысл вроде ясен: на каждую из трех кнопок повесить СВОЙ обработчик, который выполнить некоторые действия, указанные для ДАННОЙ кнопки.
На самом деле получается какое-то гониво. Вместо того, чтобы выполнялось действие у данной нажатой кнопки, выполняется действие для последней кнопки (она у меня последняя в объекте data). Чтобы нужно сделать, чтобы инициализация в цикле была верной?
Или все-таки придется писать три однотипных кода?