简体   繁体   English

如何在JQuery中使用foreach循环

[英]how to use foreach loops with JQuery

i'm trying to show list of data in a table by using smarty templates and foreach loops .. but i want to give an id the ability to show new data below every .. but it works with the first only 我试图通过使用smarty模板和foreach循环在表中显示数据列表。但是我想给id提供在每个..下面显示新数据的功能,但它仅适用于第一个

problem is with the img with id (subjects) i want to show the id (result) each time i click the img .. but it works only with the first line .. how can i make it works with all lines ?? 问题是具有ID(主题)的img,我想每次单击img时都显示ID(结果)..但是它仅适用于第一行..我如何使它适用于所有行?

<script type="text/javascript">
$(document).ready(function(){    
$('#subjects').click(function(){  
$('#result').fadeIn(2000);
});
});
</script>

<br /><br /><table width="100%">
<tr class="tbl">
<td colspan="6">{$ci->lang->line('modules_list')}</td>
</tr><tr>
<td class="tbl1" style="width: 8%;">{$ci->lang->line('number')}</td>
<td class="tbl2" style="width: 28%;">{$ci->lang->line('title')}</td>
<td class="tbl1" style="width: 10%;">{$ci->lang->line('add_subject')}</td>
<td class="tbl2" style="width: 10%;">{$ci->lang->line('subjects_list')}</td>
<td class="tbl1" style="width: 8%;">{$ci->lang->line('edit')}</td>
<td class="tbl2" style="width: 8%;">{$ci->lang->line('delete')}</td>
</tr>
{foreach $modules_list as $module}
<tr>
<td class="tbl1" style="width: 8%;">{$module.number}</td>
<td class="tbl2" style="width: 28%;">{$module.title}</td>
<td class="tbl1" style="width: 10%;"><a href="{base_url('admincp/subjects/add')} /{$module.id}"><img src="{base_url('images/icons/add.png')}" /></a></td>
<td class="tbl2" style="width: 10%;"><img id="subjects" src="{base_url('images/icons/list.png')}" /></td>
<td class="tbl1" style="width: 8%;"><a href="{base_url('admincp/modules/edit')}/{$module.number}"><img src="{base_url('images/icons/edit.png')}" /></a></td>
<td class="tbl2" style="width: 8%;"><a onclick="return confirm('{$ci->lang->line('delete_confirm_msg')}')" href="{base_url('admincp/modules/delete')}/{$module.number}"><img src="{base_url('images/icons/delete.gif')}" /></a></td>
</tr>
<tr id="result" style="display:none">
<td>RESULT</td>
</tr>
{/foreach}
</table>
</div>
</body>
</html>

== ==

i've solved this problem , it works now but i have another small problem , i want to use aJax to get some information from another page about each moduke when i show the hidden tr .. i want it to get some data from page (modules/$module_id) .. i know how to use ajax .. but how can i use the variable {$module_id} in javascript code ?? 我已经解决了这个问题,现在可以使用,但是我还有另一个小问题,当我显示隐藏的tr时,我想使用aJax从另一个页面获取一些有关每个Moduke的信息。我希望它从页面获取一些数据( modules / $ module_id)..我知道如何使用ajax ..但如何在JavaScript代码中使用变量{$ module_id}?

This is how the jQuery each works: jQuery的工作方式如下:

$(".elements").each( function() {
  $(this);
})

http://api.jquery.com/jQuery.each/ http://api.jquery.com/jQuery.each/

An id must be unique in the document. ID在文档中必须唯一。 There can only be one object with a given id. 具有给定ID的对象只能是一个。 So, trying to refer to subsequent versions of this 因此,尝试引用此版本的后续版本

<tr id="result" style="display:none">

beyond the first one will not work. 超过第一个将不起作用。 $('#result') will only find the first one. $('#result')只会找到第一个。

Instead, change it to a class and do this: 相反,将其更改为一个类并执行以下操作:

<tr class="result" style="display:none">

$('.result:hidden').first().fadeIn(2000);

The class allows you to have the many objects with the same class attached. 该类使您可以连接具有相同类的许多对象。 The jQuery then finds the ones with that class that are also hidden and then fades in only the first one. 然后,jQuery找到具有该类的那些也被隐藏,然后仅在第一个中淡出的类。

You should use a class for results and subjects , otherwise you'll get duplicate id attributes which will render your page invalid. 您应该为resultssubjects使用一个class ,否则您将获得重复的id属性,这将使您的页面无效。 Also, add a class to each module tr so it can be easily identified. 另外,向每个模块tr添加一个类,以便可以容易地识别它。 Try this: 尝试这个:

{foreach $modules_list as $module}
    <tr class="module-row">
        <td class="tbl1" style="width: 8%;">{$module.number}</td>
        <td class="tbl2" style="width: 28%;">{$module.title}</td>
        <td class="tbl1" style="width: 10%;"><a href="{base_url('admincp/subjects/add')} /{$module.id}"><img src="{base_url('images/icons/add.png')}" /></a></td>
        <td class="tbl2" style="width: 10%;"><img class="subjects" src="{base_url('images/icons/list.png')}" /></td>
        <td class="tbl1" style="width: 8%;"><a href="{base_url('admincp/modules/edit')}/{$module.number}"><img src="{base_url('images/icons/edit.png')}" /></a></td>
        <td class="tbl2" style="width: 8%;"><a onclick="return confirm('{$ci->lang->line('delete_confirm_msg')}')" href="{base_url('admincp/modules/delete')}/{$module.number}"><img src="{base_url('images/icons/delete.gif')}" /></a></td>
    </tr>
    <tr class="result" style="display:none">
        <td>RESULT</td>
    </tr>
{/foreach}
$('.subjects').click(function() {  
    var $tr = $(this).closest('tr');
    $tr.nextUntil('.module-row').fadeIn(2000);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM