Ваш .next()
элемент буквально является следующим элементом в вашем HTML коде, поэтому в вашем случае это <span id="error_brand" class="show-error-msg"></span>
Я адаптировал ваш код. .find()
также исключает текущий элемент. Поэтому, если вы запустите это на элементе, который хотите найти, он не найдет его.
Я немного обновил ваш фрагмент, только что добавил реальную кнопку и немного контента. Кроме этого это то же самое.
$(document).on('click','.myButtonClass',function(e){
e.preventDefault();
if($(this).next().next().length){
var myval = $(this).next().next().val();
console.log('Val -'+myval);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" id="clear_promotion_brand_search" class="myButtonClass">Click me!<i class="fa fa-times"></i></button>
<span id="error_brand" class="show-error-msg"></span>
<input type="hidden" name="promotion_brand_id" value="testvalue" data-id="brand" class="search-id is-validate form-fields-value">