Что вы делаете:
for every existing row R
if R.id == newRow.id
alert
break
else
add newRow
Это добавит newRow для каждой строки, которая предшествует существующей строке с этим идентификатором. Со строками [1, 2, 3, 4, 5, 6, 7, 8, 9] и добавлением строки 9 эта строка будет добавлена 8 раз, прежде чем появится предупреждение.
Что вы хотите сделать, это:
exists = false
for every existing row R
if R.id == newRow.id
existing = true
alert
break
if !exists
add newRow
Эквивалент в JS:
addToTable = function() {
var selected = $("select[name*='mySelect'] option:selected").val();
var exists = false;
$('#myTable').find('tr').each(function() {
if ($(this).attr('id')==selected) {
alert('Record has already existed!');
exists = true;
return false;
}
});
if(!exists) {
$('#favourite_hotels_table').append('<tr id="'+selected+'"><td>'+selected+'</td></tr>');
}
}