JQuery функция запускается после двух кликов
Когда я загружаю страницу selText() запускается только после двух кликов, а затем она работает нормально, но если обновить страницу, мне нужно нажать дважды еще раз
<a href="javascript: selText();" class="select">click</a>
<input type="text" value="value" />
<a href="javascript: selText();" class="select">click</a>
<input type='text' value='value' />
<a href="javascript: selText();" class="select">click</a>
<input type="text" value="value" />
function selText() {
$(".select").click(function () { $(this).nextUntil("a").select(); });
}
4 ответа
Это потому, что когда вы добавляете
function selText() {
$(".select").click(function () { $(this).nextUntil("a").select(); });
}
и затем нажмите на ссылку привязки, что происходит, в первый раз, когда функция связывает событие щелчка с элементом ".select". Это причина, почему первый клик ничего не делает. Но щелчки после этого будут работать как положено. Нежелательный эффект приведенного выше кода состоит в том, что вы связываете событие click несколькими функциями, которые фактически выполняют одно и то же действие (число связанных функций равно числу раз, когда вы нажимаете тег привязки)
Ответ в том, что вам нужно разместить
$(".select").click(function () { $(this).nextUntil("a").select(); });
под
$(document).ready(function(){
..// your code here
});
Я не знаю почему, но в некоторых представлениях моего проекта приведенный выше код не работает, и я должен сделать следующее
$(document).ready(function () {
$(document).on('click', '.tabl-red', function (e) {
e.preventDefault();
$(this).nextUntil("a").select();
});
});
может это кому то поможет
Вставьте свой код в
$(document).ready(function() {
$(".select").click(function (e) {
e.preventDefault();
$(this).nextUntil("a").select();
});
});
Вы регистрируете обработчик клика, который вызывает select
метод обработчика щелчка, чтобы при первом щелчке не было обработчика для выбора элементов, а просто регистрировался обработчик, который будет выполнять выбор. Когда произойдет второй щелчок, у вас будет 2 обработчика для события щелчка один selText
и второй обработчик, зарегистрированный первым. Но когда вы делаете третий щелчок select()
код будет вызван дважды.
Поэтому в вашем случае решение состоит в том, чтобы удалить встроенный обработчик и зарегистрировать обработчик щелчков в обратном вызове dom ready, как показано ниже.
<a href="#" class="select">click</a>
<input type="text" value="value" />
<a href="#" class="select">click</a>
<input type='text' value='value' />
<a href="#" class="select">click</a>
<input type="text" value="value" />
затем
jQuery(function () {
$(".select").click(function (e) {
$(this).nextUntil("a").select();, e.preventDefault()
});
})