使用 .each() 将输入复制到多个 div

发布于 2024-12-21 08:51:46 字数 411 浏览 1 评论 0原文

我想将用户的输入复制到多个div。 我尝试使用 .each() 因为我想将它应用于后面的每个 div。 到目前为止我已经编写了这段代码,但它仅适用于第一个 div。

<input type="text" name="someText" id="someText">



$("#someText").keyup(function() {
    var x = $("#someText").val();
    $("#copy").each(function () {
        $(this).html(x);
    });
});


<div id="copy"></div>
<div id="copy"></div>

最好的问候,

菲利克斯

i want to copy the input from a user to multiple div's.
I tried to use .each() because i want to apply it to every div that follows.
I wrote this code so far, but it's only working for the first div.

<input type="text" name="someText" id="someText">



$("#someText").keyup(function() {
    var x = $("#someText").val();
    $("#copy").each(function () {
        $(this).html(x);
    });
});


<div id="copy"></div>
<div id="copy"></div>

Best Regards,

Felix

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

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

发布评论

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

评论(5

断念 2024-12-28 08:51:46

ID 必须是唯一的

id = 姓名 [CS]
该属性为元素指定一个名称。该名称在文档中必须是唯一的。

大多数浏览器将返回具有给定 ID 的文档的第一个元素,但行为未指定。

如果您想选择多个元素,请使用类:

HTML:

<div class="copy"></div>
<div class="copy"></div>

JavaScript:

$("#someText").keyup(function() {
    $(".copy").text(this.value);
});

其他一些要点:

  • 您不必使用 .each,setter 方法通常始终应用于集合中的所有元素。
  • 在事件处理程序内部,this 指的是处理程序绑定到的元素。您不必再次使用选择器。
  • 如果您已经拥有对 DOM 元素的引用,则直接访问其属性之一而不是通过 jQuery 通常会更简单。

IDs have to be unique:

id = name [CS]
This attribute assigns a name to an element. This name must be unique in a document.

Most browsers will return the first element of a document with a given ID, though the behaviour is unspecified.

Use classes instead if you want to select multiple elements:

HTML:

<div class="copy"></div>
<div class="copy"></div>

JavaScript:

$("#someText").keyup(function() {
    $(".copy").text(this.value);
});

Some other points:

  • You don't have to use .each, setter methods are normally always applied to all elements of the set.
  • Inside the event handler, this refers to the element the handler is bound to. You don't have to use the selector again.
  • If you already have a reference to a DOM element, it is often simpler to just access one of its properties directly instead of going through jQuery.
假面具 2024-12-28 08:51:46

我不认为这会失败,但你仍然应该在这里使用 class 而不是 ids 。

<div class="copy"></div>
<div class="copy"></div>

然后,您可以像这样添加输入中的值:

$("#someText").keyup(function() { $('.copy').text($(this).val()); });

请注意,我更改了您的示例以使用 text 函数而不是 .html 函数。因为您绑定到 keyup 事件,所以如果用户输入 HTML,您在标记完成之前插入的 HTML 很可能会被破坏。如果你想接受 HTML,你应该绑定到模糊事件:

$("#someText").blur(function() { $('.copy').html($(this).val()); });

I wouldn't think this would fail, but you should nevertheless use class instead of ids here.

<div class="copy"></div>
<div class="copy"></div>

Then you can add the value from the input like this:

$("#someText").keyup(function() { $('.copy').text($(this).val()); });

Note that I changed your example to use the text function instead of the .html function. Because you bind to the keyup event, chances are that if the user inputs HTML, the HTML you insert before the tag is finished would be broken. If you want to accept HTML you should bind to the blur event instead:

$("#someText").blur(function() { $('.copy').html($(this).val()); });
醉殇 2024-12-28 08:51:46

使用类而不是 ID。问题解决了:-)

<input type="text" name="someText" id="someText">

<script>

    $("#someText").keyup(function() {
        var x = $("#someText").val();
        $(".copy").each(function () {
            $(this).html(x);
        });
    });
</script>

<div class="copy"></div>
<div class="copy"></div>

use class instead of ID. Problem solved :-)

<input type="text" name="someText" id="someText">

<script>

    $("#someText").keyup(function() {
        var x = $("#someText").val();
        $(".copy").each(function () {
            $(this).html(x);
        });
    });
</script>

<div class="copy"></div>
<div class="copy"></div>
夜空下最亮的亮点 2024-12-28 08:51:46

我认为问题在于,当您使用 ID 选择器时,JQuery 仅获取第一个实例。

如果您分配一个班级,它应该可以工作。

就我个人而言,我会这样做...

<input type="text" name="someText" id="someText">

$("#someText").keyup(function() {
    var x = $(this).val();
    $(".copy").html(x);
});

<div class="copy"></div>
<div class="copy"></div>

或者您可以像这样使用 name=copy 和选择器...

$("[name=copy]").html(x);

尽管根据您的数据的工作方式,最好不要有重复的“name”属性值

I think the problem is that JQuery only gets the first instance when you use an ID selector.

If you assign a class instead it should work.

Personally I would go for this...

<input type="text" name="someText" id="someText">

$("#someText").keyup(function() {
    var x = $(this).val();
    $(".copy").html(x);
});

<div class="copy"></div>
<div class="copy"></div>

Or you could use name=copy and selector like so...

$("[name=copy]").html(x);

Though depending on how your data works it might be best not to have duplicate "name" attribute values

北凤男飞 2024-12-28 08:51:46

JavaScript

<script type="text/javascript" charset="utf-8">

function getID(obj) {   
   //alert(obj);
   //for text 1 
   $("#t1").val(obj);
}
</script>

Html

<td onClick="getID('${vusers.id}');" id="vid">
   Click on this text
</td>

<input type="text" size=10 id="t1" />

JavaScript

<script type="text/javascript" charset="utf-8">

function getID(obj) {   
   //alert(obj);
   //for text 1 
   $("#t1").val(obj);
}
</script>

Html

<td onClick="getID('${vusers.id}');" id="vid">
   Click on this text
</td>

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