Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中处理具有动态ID的事件?_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

如何在javascript中处理具有动态ID的事件?

如何在javascript中处理具有动态ID的事件?,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我已经为表的元素使用了动态id。我想用javascript处理它。我该怎么做 <table> <%@task.each do |task|%> <tr id="task-<%=task.id%>"> .... </tr> </table> .... 现在在Javascript中,如何获取特定行的id来处理事件,如onclick()或onchange()?创

我已经为表的元素使用了动态id。我想用javascript处理它。我该怎么做

<table>
    <%@task.each do |task|%>
        <tr id="task-<%=task.id%>">
            ....
        </tr>
</table>

....

现在在Javascript中,如何获取特定行的id来处理事件,如
onclick()
onchange()

创建增量
id
(或任何其他属性)从来都不是一个好模式;它太僵硬,最终会成为一种难以维持的痛苦

相反,您可以通过在所有这些
tr
元素上放置一个公共
class
,并在事件处理程序中使用
this
来引用引发事件的元素来实现这一点。下面是一个例子:


$('.task')。单击(函数(){
console.log($(this.data('id'));
});

创建增量
id
(或任何其他属性)从来都不是一个好模式;它太僵硬,最终会成为一种难以维持的痛苦

相反,您可以通过在所有这些
tr
元素上放置一个公共
class
,并在事件处理程序中使用
this
来引用引发事件的元素来实现这一点。下面是一个例子:


$('.task')。单击(函数(){
console.log($(this.data('id'));
});

您也可以使用下面的代码执行此操作

$(document).on('click', function (event)  or  $('tr').on('click', function (event) 
{
var id = event.target.id.toString();
alert("#"+id);
}

参数“event”包含必要的数据。检查控制台,查看参数“事件”中的详细信息列表。

您也可以使用下面的代码执行此操作

$(document).on('click', function (event)  or  $('tr').on('click', function (event) 
{
var id = event.target.id.toString();
alert("#"+id);
}

参数“event”包含必要的数据。检查控制台,查看参数“event”中的详细信息列表。

可以使用but.实现。Rory提供的解决方案是可行的…我知道了。。这是帮助我的链接..我不是给了你同样的解决方案吗?是的,谢谢。。我用它的时候犯了错误,我试着用其他的。你的解决方案是绝对正确的。可以通过使用来实现,但是..Rory提供的解决方案是可行的…我明白了。。这是帮助我的链接..我不是给了你同样的解决方案吗?是的,谢谢。。我用它的时候犯了错误,我试着用其他的。您的解决方案完全正确。我可以这样使用:$(.addrow).data('id')。after(..)。它实际上不起作用。这里的错误是什么。如何纠正?你想做什么?那里的代码将失败,因为
data()
没有返回jQuery对象。我想在特定的行之后插入一行。为此,我必须捕获该id。
$('.task').filter(function(){return$(this.data('id')='taskId';})。after(…)
。如果你需要一个更完整的例子,你最好问一个新问题,因为这个问题有点超出范围。下面是帮助我解决问题的链接。我可以这样使用:$(.addrow).data('id')。after(..)。它实际上不起作用。这里的错误是什么。如何纠正?你想做什么?那里的代码将失败,因为
data()
没有返回jQuery对象。我想在特定的行之后插入一行。为此,我必须捕获该id。
$('.task').filter(function(){return$(this.data('id')='taskId';})。after(…)
。如果你需要一个更完整的例子,你最好问一个新问题,因为这有点超出了这个问题的范围。这是帮助我解决问题的链接..1)
tr
元素没有
val()
来设置2)为什么不直接使用
this
而不是拼凑一个选择器呢?是的,你可以,为了理解,我使用了.val行(“test”)。代码的目的以var id=…行结束。。然后我使用了备用选择器$(''tr')而不是$(document)。毕竟这是实现same1的另一种可能的方法)
tr
元素没有
val()
来设置2)为什么不使用
this
而不是拼凑一个选择器呢?是的,为了理解我使用了行.val(“test”).代码的目的是以var id=…行结束,然后我使用了备用选择器$(''tr'),而不是$(document)。毕竟,这是实现同样目标的另一种可能方式