单击向输入添加文本值的链接
Click on links that add text values to inputs
我想做什么!按 1-10 的顺序排列您的前 10 部电影。
单击链接时,应将文本值添加到输入中,并添加一个删除该值的按钮。应重复该过程,直到所有输入都具有值。
我可怕的代码!
当我单击链接时,它会将值添加到所有输入中。如何单击将值添加到input1的链接,单击另一个链接将值添加到input2等。
.HTML
<div class="movies">
<a href="#">Titanic</a>
<a href="#">Rainman</a>
<a href="#">Forrest Gump</a>
</div>
<ol>
<li>
<input type="text">
<button class="remove">X</button>
</li>
<li>
<input type="text">
<button class="remove">X</button>
</li>
<li>
<input type="text">
<button class="remove">X</button>
</li>
</ol>
jQuery
$('.movies a').click(function() {
var value = $(this).text();
var input = $('input')
input.val(value);
$('button').show();
});
$('button').click(function() {
$('input').val("");
$(this).hide();
});
观看小提琴上的演示
.filter()
来选择没有当前值的下一个输入。
$('.movies a').click(function() {
var value = $(this).text();
var input = $('input').filter(function () {
return this.value === ''
}).eq(0);
input.val(value);
input.next().show();
});
这是一个演示:http://jsfiddle.net/yp2ee/3/
上面的代码将只选择值为空的输入元素,然后它只选择 .filter()
函数返回的第一个元素。这样,您只更改单个输入的值,并且只更改第一个空白输入的值。
我还更新了按钮的显示/隐藏代码,方法是相对于单击的输入元素或按钮元素显示和隐藏元素:
input.next().show();
更新
您可以使用.data()
来存储链接的状态,以便只能添加一次影片:
$('.movies a').data('clicked', false).click(function() {
if ($(this).data('clicked') === false) {
$(this).data('clicked', true);
...
}
});
然后在"X"按钮单击事件处理程序中,您可以在删除值之前更改有关该值的数据:
$('button').click(function() {
var val = $(this).prev().val();
$('.movies a').filter(function () {
return $(this).text() === val
}).data('clicked', false);
$(this).prev().val("");
$(this).hide();
});
这是我更新的演示:http://jsfiddle.net/yp2ee/7/
另一种方式:不符合标准,但可读
通过添加类和 id 稍微修改了 HTML
http://jsfiddle.net/yp2ee/5/
$('.movies a').click(function() {
var value = $(this).text();
var id = $(this).attr('id');
$('.'+id).val(value).show();
$('.'+id).next('button').show();
});
$('button').click(function() {
$(this).prev('input').val("");
$(this).hide();
});
选择具有tag
名称的元素即可。它将返回collection
元素。所以我们不需要那个。右。?所以我们应该做的是我们必须通过使用.filter()
函数通过向它提供必要的条件[空]来过滤所需的元素。
好的,现在我们有机会获得多个空文本框,因此在这种情况下,我们必须使用 .first()
从该集合中选择第一个元素。
尝试
$('.movies a').click(function() {
var value = $(this).text();
var input = $('input')
.filter(function(){ return $.trim($(this).val()) == ""; })
.first();
input.val(value);
input.next('button').show();
});
$('button').click(function() {
$(this).prev('input').val("");
$(this).hide();
});
上述解释对这一机制有最低限度的了解。好的,现在.next()
和.prev()
。同样,您将使用tag
名称选择这些按钮。所以实际上在这种情况下我们需要的是选择input box
旁边的button
,反之亦然。因此,我们可以利用这两者来完成我们需要的东西。
演示
- 替换移动设备的链接文本
- 用于更改链接文本的字体颜色的代码
- 如何使用JavaScript将链接文本添加到电子邮件中
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- 如何为应用深度链接创建超链接文本
- HTML5 中图像顶部的超链接文本
- 如何使用JavaScript在HTML表格中获取td内部的链接文本
- JavaScript:链接网址,但从显示的链接文本中删除“http://”
- Javascript 在添加表行时添加链接文本
- jQuery 中的链接文本框
- 更改锚链接文本的大小和颜色
- 根据链接文本的内容添加类
- 使用javascript在页面上搜索链接文本
- 使用XML文档中的内容更新链接文本
- 查找具有正则表达式的链接文本
- 在Extjs中动态更改超链接文本
- 在Javascript/JQuery中从超链接文本获取Href
- 捕获链接文本并将其作为查询字符串附加到URL
- 用于获取链接文本的正则表达式
- 将单击的链接文本传递给PHP,并使用该链接文本检索所有图像并在另一个页面中显示它们