Спасибо charlietfi за помощь в этом вопросе.
Я понимаю, что мои объяснения не были достаточно точными, чтобы понять ситуацию. Ещё я внес ошибку при копировании кода.
Существует настоящая проблема, в которой я нашел решение, которое достигает цели, но я не уверен ни в объяснении того, почему он не функционировал, и почему он функционирует сейчас.
Там, где два шага развития:
1 - Просто выполняйте вещи, когда щелкает область в заголовке (и не затрагивает другую вещь в фокусе элемента, пока нажата клавиша Shift)
Структура HTML содержит:
<h5>
<span class="toc-target" tabindex="1000"> <!-- puts the "target" on top -->
<span class="H_title">
Adhérent
</span>
</span>
<span class="endof_tocid"></span>
</h5>
Причина первых двух уровней SPAN заключается в том, что он выполняется двумя разными частями программы и требует двух разных классов.
Связанный код, который функционировал (с трех лет):
$(".H_title")
.click(function(event) {
if ( ... ) { do stuff1 }
return true; // go on action
} )
.focusin(function() {...do_stuff2a);} );
.focusout(function() {...do_stuff2b);} );
//END
2- Мне нужно было в некоторых случаях иметь радио-кнопку и в этом случае не выполнять stuff1 (просто добавить ввод в заголовок), тогда HTML-код стал:
<h5>
<span class="toc-target" tabindex="1000"> <!-- puts the "target" on top -->
<span class="H_title">
<input name="user_type" type="radio" value="adh">
Adhérent
</span>
</span>
<span class="endof_tocid"></span>
</h5>
и я написал код js, который не работает:
$(".H_title")
.click(function(event) {
if ( ... ) { do stuff1 }
return true; // go on action of the click on the button
} )
.focusin(function() {...do_stuff2a);} );
.focusout(function() {...do_stuff2b);} );
//END
По моему мнению, ошибка кажется, что радио-кнопка становится недоступной в промежутке H_title, пока она не имеет кода для управления событием. Примечание: то же самое относится и к действиям и событиям фокусировки.
Если для события click не написан код Jquery, все работает нормально.
//BEGIN
$(".toc-target > input")
.click( function(){ return true; });
.focusin(function() {return true; } );
.focusout(function() {return true; } );
$(".H_title")
.click(function(event) {
if ( ... ) { do stuff1: move-top }
return true; // go on actions
} )
.focusin(function() {...do_stuff2a);} );
.focusout(function() {...do_stuff2b);} );
//END
С этим кодом клик на функции ввода, каково поведение:
1 - события $(".toc-target > input")
генерируются и возвращают true, что, кажется, ничего не делает, приводит к нормальному выбору переключателя и пузырьков событий.
2- H_titles получает событие click, и оно выполняется как обычно.
На данный момент focusin-focusout по-прежнему не работает в сочетании с кнопками. Я думаю, что проблема возникает из-за конфликта с щелчком (тот факт, что заголовок получает фокус при нажатии).
Я должен уточнить некоторые из них по поводу полной эргономики и совместимости (доступно на ПК и мобильных устройствах).
Другое решение может заключаться в том, что это похоже на "распространение" от H_title до "ввода" , но я не нашел хорошего способа сделать все необходимое в stuffxx и четко разделить действия.
Может быть, я ошибаюсь или у вас есть предложения, как сделать это наилучшим образом.
С уважением
втройне