jquery - onclick复制到文本框

发布于 2024-12-03 04:39:35 字数 755 浏览 0 评论 0原文

我正在尝试将无序列表中的列表项中的文本复制到文本框。

<div class='this_section_is_created_dynamically_and_repeats_up_to_99_times'>
<label>Serial</label>
<input name="part" class= "part" type="text">
<ul>
    <li class="pattern"><a href="#" class="clickme">test1</a></li>
    <li class="pattern"><a href="#" class="clickme">test2</a></li>
</ul> 

<script>

$('.clickme').live('click', function() {                

            alert($(this).text());  // this works
        // try to copy value clicked to input box. these do not work
        $(this).prevAll('[input:text]').val($(this).text()); 
        $(this).prev(":text").val($(this).text()); 
    });     

I am trying to copy text from list item in unordered list to a text box.

<div class='this_section_is_created_dynamically_and_repeats_up_to_99_times'>
<label>Serial</label>
<input name="part" class= "part" type="text">
<ul>
    <li class="pattern"><a href="#" class="clickme">test1</a></li>
    <li class="pattern"><a href="#" class="clickme">test2</a></li>
</ul> 

<script>

$('.clickme').live('click', function() {                

            alert($(this).text());  // this works
        // try to copy value clicked to input box. these do not work
        $(this).prevAll('[input:text]').val($(this).text()); 
        $(this).prev(":text").val($(this).text()); 
    });     

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沙与沫 2024-12-10 04:39:35

prev()prevAll() 查看同级。输入是您的 ul 的同级,它是您的 li 的父级,而 li 是您的 anchors 的父级:

这些应该有效:

$(this).parent().parent().prev("input:text").val($(this).text());

或者:

$(this).parents('ul').first().prev('input:text').val($(this).text());

你也可以给你的input一个id,然后直接选择它,而不是遍历DOM。

附言。您应该关闭输入标签:

prev() and prevAll() look at siblings. The input is a sibling of your ul which is the parent of your lis which are the parents of your anchors:

These should work:

$(this).parent().parent().prev("input:text").val($(this).text());

Or:

$(this).parents('ul').first().prev('input:text').val($(this).text());

You could also give your input an id and just select it directly rather than traversing the DOM.

PS. You should close your input tag: <input name="part" class= "part" type="text" />

家住魔仙堡 2024-12-10 04:39:35

试试这个。

$('.clickme').live('click', function(e) {
    $(".part").val($(this).html()); 
});

您可以通过引用元素的 id 或类来缩短查询。
另外,您可以尝试类似的方法来获取特定元素...

$('.clickme').live('click', function(e) {
    $(this).parent().parent().prev().val($(this).html());
});

这将转到目标元素(a)的父级(li),然后是该元素的父级(ul),然后是该元素的前一个兄弟(输入)。

Try this.

$('.clickme').live('click', function(e) {
    $(".part").val($(this).html()); 
});

You could shorten your query by referring to the element by it's id or class.
Also, you could try something like this to get the specific element...

$('.clickme').live('click', function(e) {
    $(this).parent().parent().prev().val($(this).html());
});

This goes to the parent(li) of the targetted element(a), then the parent of that element(ul), then the previous sibling of the element(input).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文