JQuery:从多个具有相同名称的 ID 获取按键上的 jquery val
JQuery: Get jquery val on keypress from multiple ids with the same name
希望任何人都可以帮助解决这个问题。
我有一个 php foreach 运行,我从数据库中获取多个动作:
@foreach ($articles as $article)
<div class="article">
<input id="comment" type="text" class="materialize-textarea" placeholder="Add comment"/>
</div>
@endforeach
假设我在数据库中有 2 篇或更多篇文章。因此,在 html 一侧,div 被复制,我有多个具有相同 ID 的 div。
接下来我要jquery获取输入值。这是示例代码
$("#comment").each(function()
{
$(this).keypress(function(e)
{if (e.which == 13)
alert('works');
});
});
结果:它完美地处理从数据库中提取的第一条记录(第一篇文章)。在第二篇文章及以后的文章中,JavaScript 根本不会触发。
我理解问题是因为 jQuery 只读取了第一个 div。我在网上查看了一些解决方案,但没有一个对我真正有用。最合乎逻辑的解决方案似乎是将 .each 放在函数中。但结果是一样的。第一篇文章完美地触发了 JavaScript,其余的则没有。
注意:如果php代码看起来很奇怪请忽略它,它在laravel框架上。尽管如此,它执行正确。
此处提供的代码仅展示了应用程序的逻辑,并非实际代码。
id
属性应该是唯一的,因为它用于唯一标识元素。 id
选择器仅选择具有 id
的第一个元素,因此使用 class
代替元素组。
@foreach ($articles as $article)
<div class="article">
<input class="comment" type="text" class="materialize-textarea" placeholder="Add comment"/>
<!-------^---- set class instead of `id` --------------------------------------------------->
</div>
@endforeach
那么就没有必要使用 each()
, just bind the keypress()
事件处理程序直接对选择器进行迭代。
$(".comment").keypress(function(e){
//-^-------- class selector
if (e.which == 13)
alert('works');
});
HTML :
@foreach ($articles as $article)
<div class="article">
<input id="comment" type="text" class="materialize-textarea commentArea" placeholder="Add comment"/>
</div>
@endforeach
Javascript :
$(".commentArea").each(function(){
$(this).keypress(function(e){
if(e.which == 13){
alert("OK");
}
});
});
我们不能使用相同的 IDs.Can 使用名称或 class.Using class 是最好的方法。
希望任何人都可以帮助解决这个问题。 我有一个 php foreach 运行,我从数据库中获取多个动作:
@foreach ($articles as $article)
<div class="article">
<input id="comment" type="text" class="materialize-textarea" placeholder="Add comment"/>
</div>
@endforeach
假设我在数据库中有 2 篇或更多篇文章。因此,在 html 一侧,div 被复制,我有多个具有相同 ID 的 div。
接下来我要jquery获取输入值。这是示例代码
$("#comment").each(function()
{
$(this).keypress(function(e)
{if (e.which == 13)
alert('works');
});
});
结果:它完美地处理从数据库中提取的第一条记录(第一篇文章)。在第二篇文章及以后的文章中,JavaScript 根本不会触发。 我理解问题是因为 jQuery 只读取了第一个 div。我在网上查看了一些解决方案,但没有一个对我真正有用。最合乎逻辑的解决方案似乎是将 .each 放在函数中。但结果是一样的。第一篇文章完美地触发了 JavaScript,其余的则没有。
注意:如果php代码看起来很奇怪请忽略它,它在laravel框架上。尽管如此,它执行正确。 此处提供的代码仅展示了应用程序的逻辑,并非实际代码。
id
属性应该是唯一的,因为它用于唯一标识元素。 id
选择器仅选择具有 id
的第一个元素,因此使用 class
代替元素组。
@foreach ($articles as $article)
<div class="article">
<input class="comment" type="text" class="materialize-textarea" placeholder="Add comment"/>
<!-------^---- set class instead of `id` --------------------------------------------------->
</div>
@endforeach
那么就没有必要使用 each()
, just bind the keypress()
事件处理程序直接对选择器进行迭代。
$(".comment").keypress(function(e){
//-^-------- class selector
if (e.which == 13)
alert('works');
});
HTML :
@foreach ($articles as $article)
<div class="article">
<input id="comment" type="text" class="materialize-textarea commentArea" placeholder="Add comment"/>
</div>
@endforeach
Javascript :
$(".commentArea").each(function(){
$(this).keypress(function(e){
if(e.which == 13){
alert("OK");
}
});
});
我们不能使用相同的 IDs.Can 使用名称或 class.Using class 是最好的方法。