2013-11-01 4 views
0

, когда я загружаю страницу selText() выполняется только после того, как два клика, а затем он работает нормально, но если обновления страницы мне нужно дважды щелкнуть сновафункция JQuery первого запуска после двух клик

<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(); }); 
    } 

ответ

0

Это происходит потому, что при добавлении

function selText() { 
    $(".select").click(function() { $(this).nextUntil("a").select(); }); 
} 

, а затем нажмите на ссылку якорный, что происходит, в первый раз, функция связывает событие щелчка к элементу ".select". Именно по этой причине первый клик ничего не делает. Но клики после этого будут работать так, как ожидалось. Нежелательным эффектом вышеуказанного кода является то, что вы привязываете событие click к нескольким функциям, которые фактически выполняют одно и то же (количество функций, равное количеству раз, когда вы нажимаете тег привязки)

ответ в том, что вам необходимо поместить

$(".select").click(function() { $(this).nextUntil("a").select(); }); 

под

$(document).ready(function(){ 
..// your code here 
}); 
+0

спасибо за подробные объяснения – Egor

+0

мое удовольствие. Вы можете подтвердить ответ или отметить его как ответ, если на ваш вопрос ответили :-) –

+0

Я не могу найти, где я могу отметить это как ответ :))) – Egor

0

поместить ваш код в

$(document).ready(function() { 
    $(".select").click(function (e) { 
     e.preventDefault(); 
     $(this).nextUntil("a").select(); 
    }); 
}); 
+0

Спасибо вам, что это работает – Egor

+0

Забудь, пожалуйста, оцените его вверх и/или пометить его как ответ, если вам помог. –

0

Вы регистрируете обработчик кликов, который вызывает метод select в обработчике кликов, поэтому при первом щелчке отсутствует обработчик для выбора элементов, но он просто регистрирует обработчик, который будет делать выбор. Когда произойдет второй клик, у вас будет 2 обработчика для события click one selText и второй обработчик, зарегистрированный первым. Но когда вы сделаете третий клик, код будет вызываться дважды.

Итак, в вашем случае решение заключается в удалении встроенного обработчика и регистрации обработчика щелчка на обратном вызове dom, как показано ниже.

<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() 
    }); 
}) 
0

Я не знаю, почему, но в некоторых представлениях в моем проекте выше код не работает, и я должен сделать следующее

$(document).ready(function() { 
    $(document).on('click', '.tabl-red', function (e) { 
     e.preventDefault(); 
     $(this).nextUntil("a").select(); 
    }); 
}); 

может быть, это поможет кому-то

Смежные вопросы