0

我(有点)重新发布这个问题,这是基于上一个问题:

在rails 3中的表行上多次出现jquery对话框 - 我该怎么做?

我提供上一个链接仅供参考。

经过数小时的努力,我决定退后一步,从基础开始。我的背景是我相当精通 Rails 编程,而不是 Javascript(a la jQuery)。

我有一个表,希望能够使用 jquery 对话框更新每行中的两个字段,以提供部分来更新它们。

我设法让对话框弹出部分内容,但仅在第一行单击后续行上的字段的链接不会产生任何结果(它们只是死了)。

这是.js:

$(document).ready(function() {
$('div#status-chg-form').dialog({ autoOpen: false });
$('#statuslink').click(function(){ $('div#status-chg-form').dialog('open'); });
});

$(document).ready(function() {
$('div#eta-chg-form').dialog({ autoOpen: false });
$('#etalink').click(function(){ $('div#eta-chg-form').dialog('open'); });
});

在我的索引页面上,是 div 在各自的对话框中提供部分内容:

<div id="status-chg-form" title="CHANGE WORK ORDER STATUS" style="display:none"><%= render :partial => 'statusform' %></div>
<div id="eta-chg-form" title="CHANGE TECHNICIAN ETA" style="display:none"><%= render :partial => 'etaform' %></div>

最后,这里是链接,对表格的每一行重复:

        <%= link_to work_order.soft_completion_datetime.strftime('%m/%d/%Y %I:%M %p'), "#", :id => "etalink" %>
        <%= link_to status_display, "#", :id => "statuslink" %> 

我知道我的问题是一个补救问题,因为关于 .js,我只是没有掌握一些东西。如果有人能在这里为我指明正确的方向,以最有效的方式让这些对话框为表格的每一行工作,我将永远欠你的债。

这几天我一直在愚蠢。

4

2 回答 2

2

1-如果您在页面上使用多个项目,请使用类而不是 id 来选择要应用绑定的项目;
2-您可以将2个document ready活动块合二为一;
3-要在行中选择带有对话框的 div,您可以使用它使用closest()您指定的选择器获取最近的父级。

通过此更改,您的代码将如下所示:

$(document).ready(function() { 
    $('div.status-chg-form').dialog({ autoOpen: false }); 
    $('.statuslink').click(function(){ $(this).closest('div.status-chg-form').dialog('open'); }); 

    $('div.eta-chg-form').dialog({ autoOpen: false }); 
    $('.etalink').click(function(){ $(this).closest('div.eta-chg-form').dialog('open'); }); 
}); 
于 2012-04-18T22:44:06.253 回答
2

我猜你的问题是你所有的链接似乎都有id=statuslink,而且你不能有重复的 ID。如果您只是设置:id:class,然后将 jQuery 更改为使用.statuslink而不是#statuslink,它应该可以修复它。对于共享相同属性的任何其他元素也是如此。

于 2012-04-18T22:44:38.163 回答