Если я вас правильно понял, $ (this) должен быть некоторым объектом в событии
Чтобы повторно использовать переменную, вы можете сделать
var $sinput = $(this).closest("tr").find('select');
$('option:not(:selected)', $sinput).prop('disabled', true);
или
var $sinput = $(this).closest("tr").find('select');
$sinput.find('option:not(:selected)').prop('disabled', true);
Я бы сделал это напрямую
$(".dis").on("click", function() {
$(this).closest("tr") // the row of the button
.find('select option:not(:selected)') // all not selected options
.prop('disabled', true);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td><button type="button" class="dis">Disable not selected</button>
<select>
<option value="">Please select</option>
<option value="1">One</option>
<option value="2" selected>Two</option>
</select>
</td>
</tr>
<tr>
<td><button type="button" class="dis">Disable not selected</button>
<select>
<option value="">Please select</option>
<option value="1" selected>One</option>
<option value="2">Two</option>
</select>
</td>
</tr>
</table>
Если вы просто хотите отключить все невыбранные параметры в таблице при загрузке страницы, это может быть
$(function() {
$("#tableId")
.find('select option:not(:selected)')
.prop('disabled', true);
});