If you know the hierarchy exactly beforehand, then I'd use
$( "#starting_point" ).parent().parent().parent().parent().find( "#ending_point" );
or do something with .parentsUntil() (https://api.jquery.com/parentsUntil/). (OK, not a beautiful solution, but surely works.)
If you do not know the hierarchy (it's created dynamically), but you are sure, that #starting_point is "lower" than #ending_point, then you may create a recursive function for that, checking every level for the type you are looking for.
// start_obj is the jQuery object you start your recursive function from
// end_type is the type of element you are looking for in the hierarchy (e.g. input[ type="text" ] in your case
function get_sibling_on_other_level( start_obj, end_type ) {
var grampy = start_obj.parent().parent();
if ( grampy.find( end_type ).length > 0 ) {
return grampy.children( end_type );
} else {
// start the iteration "one level higher"
// actually you should stop at "body" level - if you did not find
// what you were looking for, then it's not in that branch of hierarchy
get_sibling_on_other_level( start_obj.parent(), end_type );
}
}
Other jQuery method used in the function: https://api.jquery.com/children/