我有一個生成字母表并水平列出它們的腳本。我想要做的是單擊無序串列中的一個字母并將其填充到文本框中。
HTML
<input id="letter" type="text" />
<ul id="test"></ul>
jQuery
$(document).ready(function(){
for (var i = 65; i <= 90; i ) {
$('#test').append('<li><a href="#">' String.fromCharCode(i) '</a></li>');
}
});
var li = $(this).parent();
$(this).click(function(){
var clickedLetter = li.siblings().find('a.active').text();
$("#letter").val(clickedLetter);
});
這是一個代碼筆。我哪里錯了?
uj5u.com熱心網友回復:
'this' 指的是 window 物件,它不會給你 li 的參考。
var li = $(this).parent();
您沒有分配給“a”的活動班級
var clickedLetter = li.siblings().find('a.active').text();
試試這個代碼:
$(document).ready(function () {
for (var i = 65; i <= 90; i ) {
$("#test").append(
'<li><a href="#">' String.fromCharCode(i) "</a></li>"
);
$("#test li").on("click", function (event) {
var clickedLetter = $(this).find('a').text();
$("#letter").val(clickedLetter);
});
}
});
ul#test li{
display:inline;
margin-right:.40em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="letter" type="text" />
<ul id="test"></ul>
uj5u.com熱心網友回復:
您可以添加一個事件并通過 jQuery 使用事件委托
$(document).ready(function() {
const ul = $("#test");
const input = $("#letter");
for (var i = 65; i <= 90; i ) {
ul.append(
'<li><a href="#">' String.fromCharCode(i) "</a></li>"
);
}
ul.on("click", "a", function (evt) {
evt.preventDefault();
input.val(this.textContent);
// input.val($(this).text());
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="letter" type="text" />
<ul id="test"></ul>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381004.html
標籤:查询
