Index: src/bp-templates/bp-legacy/buddypress/members/register.php
===================================================================
--- src/bp-templates/bp-legacy/buddypress/members/register.php	(revision 11609)
+++ src/bp-templates/bp-legacy/buddypress/members/register.php	(working copy)
@@ -182,7 +182,7 @@
 							do_action( 'bp_custom_profile_edit_fields_pre_visibility' );
 
 							if ( bp_current_user_can( 'bp_xprofile_change_field_visibility' ) ) : ?>
-								<p class="field-visibility-settings-toggle" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id() ?>">
+								<p class="field-visibility-settings-toggle" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id() ?>"><span id="<?php bp_the_profile_field_input_name(); ?>-2">
 									<?php
 									printf(
 										__( 'This field can be seen by: %s', 'buddypress' ),
@@ -189,7 +189,8 @@
 										'<span class="current-visibility-level">' . bp_get_the_profile_field_visibility_level_label() . '</span>'
 									);
 									?>
-									<button type="button" class="visibility-toggle-link"><?php _ex( 'Change', 'Change profile field visibility level', 'buddypress' ); ?></button>
+									</span>
+									<button type="button" class="visibility-toggle-link" aria-describedby="<?php bp_the_profile_field_input_name(); ?>-2" aria-expanded="false"><?php _ex( 'Change', 'Change profile field visibility level', 'buddypress' ); ?></button>
 								</p>
 
 								<div class="field-visibility-settings" id="field-visibility-settings-<?php bp_the_profile_field_id() ?>">
Index: src/bp-templates/bp-legacy/buddypress/members/single/profile/edit.php
===================================================================
--- src/bp-templates/bp-legacy/buddypress/members/single/profile/edit.php	(revision 11609)
+++ src/bp-templates/bp-legacy/buddypress/members/single/profile/edit.php	(working copy)
@@ -52,7 +52,7 @@
 				?>
 
 				<?php if ( bp_current_user_can( 'bp_xprofile_change_field_visibility' ) ) : ?>
-					<p class="field-visibility-settings-toggle" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id() ?>">
+					<p class="field-visibility-settings-toggle" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id() ?>"><span id="<?php bp_the_profile_field_input_name(); ?>-2">
 						<?php
 						printf(
 							__( 'This field can be seen by: %s', 'buddypress' ),
@@ -59,7 +59,8 @@
 							'<span class="current-visibility-level">' . bp_get_the_profile_field_visibility_level_label() . '</span>'
 						);
 						?>
-						<button type="button" class="visibility-toggle-link"><?php _e( 'Change', 'buddypress' ); ?></button>
+						</span>
+						<button type="button" class="visibility-toggle-link" aria-describedby="<?php bp_the_profile_field_input_name(); ?>-2" aria-expanded="false"><?php _ex( 'Change', 'Change profile field visibility level', 'buddypress' ); ?></button>
 					</p>
 
 					<div class="field-visibility-settings" id="field-visibility-settings-<?php bp_the_profile_field_id() ?>">
Index: src/bp-templates/bp-legacy/js/buddypress.js
===================================================================
--- src/bp-templates/bp-legacy/js/buddypress.js	(revision 11609)
+++ src/bp-templates/bp-legacy/js/buddypress.js	(working copy)
@@ -1187,7 +1187,7 @@
 	jq( '.visibility-toggle-link' ).on( 'click', function( event ) {
 		event.preventDefault();
 
-		jq( this ).parent().hide().addClass( 'field-visibility-settings-hide' )
+		jq( this ).attr( 'aria-expanded', 'true' ).parent().hide().addClass( 'field-visibility-settings-hide' )
 			.siblings( '.field-visibility-settings' ).show().addClass( 'field-visibility-settings-open' );
 	} );
 
@@ -1194,6 +1194,8 @@
 	jq( '.field-visibility-settings-close' ).on( 'click', function( event ) {
 		event.preventDefault();
 
+		jq( '.visibility-toggle-link' ).attr( 'aria-expanded', 'false' );
+
 		var settings_div = jq( this ).parent(),
 			vis_setting_text = settings_div.find( 'input:checked' ).parent().text();
 
