将元素 ID 从 PHP 传递到 Javascript
Passing an element id from PHP to Javascript
我的 mysql 数据库中有一些数据。我在 table 中使用 foreach 循环显示数据,如下所示
<table>
foreach($students as $row):?>
<tr><td><i id="expand<?php echo $row['student_id'];?>" class="myclass fa fa-plus-square"></i></td>
<td><?php echo $i; $i++;?></td>
<td><?php echo $row['roll'];?></td>
<td style="text-align:center;"><img src="<?php echo $this->crud_model->get_image_url('student',$row['student_id']);?>" class="img-circle" width="50" /></td>
<td><?php echo $row['name'];?></td>
<td><?php echo $row['address'];?></td>
<td><?php echo $row['phone'];?></td></tr></table>
我在 Javascript 中也有一个点击事件函数,如下所示
$('#expand').click(function(){
$('#dev').toggleClass('hidden');
});
这是我想在点击事件时隐藏和显示。请注意,此行包含学生 ID 为 $row['student_id']
的学生数据
<tr id="dev<?php echo $row['student_id'];?>" class="hidden">
<td colspan="7">
<table>
<tr><td>Phone Number is <?php echo $row['phone'];?></td></tr>
</table>
</td>
</tr>
我想将元素 id 从 php 传递给 javascipt,以便在单击 id expand 时它会执行一些功能,例如显示或隐藏
谢谢。
您没有名为 "expand"
的 id
,您有这个:
id="expand<?php echo $row['student_id'];?>"
假设 $row['student_id']
不为空(并且不应该为空,至少对于多个记录而言,因为 id
s 需要是唯一的),那么 id
不会是 "expand"
。它将,但是,开始于 "expand"
。所以你可以 select on that:
$('[id^="expand"]').click(function(){
// handle the click event here
});
这会将相同的 click
处理程序附加到每个匹配项,即页面上 id
以 "expand"
开头的任何元素。请注意,处理程序将为每个元素执行相同的操作,因此您当前的逻辑针对一个元素(具有 "dev"
的 id
)来切换其可见性。因此,目前,每次点击都会 show/hide 相同的元素。您可能不想要 exactly 该功能,但这并不完全包含在问题中。 (您的标记中没有 #dev
元素,因此您并不完全清楚您希望它如何表现。)
编辑
有多种方法可以定位您想要的元素 show/hide。无需更改标记,您可能只需 get the numeric portion of the id
并使用它来构建目标 id
。可能是这样的:
$('[id^="expand"]').click(function(){
var idNumber = $(this).attr('id').replace(/expand/g, '');
$('#dev'+id).toggleClass('hidden');
});
向元素添加属性。
<i id="expand<?php echo $row['student_id'];?>" data-id="<?php echo $row['student_id'];?>" class="myclass fa fa-plus-square"></i>
在 class 上调用函数而不是在 id 上调用函数,因为有多个元素。
$('.myclass').click(function(){
var id = $(this).attr('data-id');
$('#dev-'+id).toggleClass('hidden'); // apply proper logic here.
});
您还可以在选择器中使用 .myclass
,然后从 id
中删除字符串 expand
,您从 attr()
:
检索
$('.myclass').click(function(){
var id = $(this).attr('id').replace('expand','');
$('#dev'+id).toggleClass('hidden');
});
感谢所有参与者
但要特别感谢@david 和@deacs
我已经让它工作如下
$('[id^="expand"]').click(function(){
var id = $(this).attr('data-id');
$('#dev'+id).toggleClass('hidden');
});
我的 mysql 数据库中有一些数据。我在 table 中使用 foreach 循环显示数据,如下所示
<table>
foreach($students as $row):?>
<tr><td><i id="expand<?php echo $row['student_id'];?>" class="myclass fa fa-plus-square"></i></td>
<td><?php echo $i; $i++;?></td>
<td><?php echo $row['roll'];?></td>
<td style="text-align:center;"><img src="<?php echo $this->crud_model->get_image_url('student',$row['student_id']);?>" class="img-circle" width="50" /></td>
<td><?php echo $row['name'];?></td>
<td><?php echo $row['address'];?></td>
<td><?php echo $row['phone'];?></td></tr></table>
我在 Javascript 中也有一个点击事件函数,如下所示
$('#expand').click(function(){
$('#dev').toggleClass('hidden');
});
这是我想在点击事件时隐藏和显示。请注意,此行包含学生 ID 为 $row['student_id']
的学生数据 <tr id="dev<?php echo $row['student_id'];?>" class="hidden">
<td colspan="7">
<table>
<tr><td>Phone Number is <?php echo $row['phone'];?></td></tr>
</table>
</td>
</tr>
我想将元素 id 从 php 传递给 javascipt,以便在单击 id expand 时它会执行一些功能,例如显示或隐藏
谢谢。
您没有名为 "expand"
的 id
,您有这个:
id="expand<?php echo $row['student_id'];?>"
假设 $row['student_id']
不为空(并且不应该为空,至少对于多个记录而言,因为 id
s 需要是唯一的),那么 id
不会是 "expand"
。它将,但是,开始于 "expand"
。所以你可以 select on that:
$('[id^="expand"]').click(function(){
// handle the click event here
});
这会将相同的 click
处理程序附加到每个匹配项,即页面上 id
以 "expand"
开头的任何元素。请注意,处理程序将为每个元素执行相同的操作,因此您当前的逻辑针对一个元素(具有 "dev"
的 id
)来切换其可见性。因此,目前,每次点击都会 show/hide 相同的元素。您可能不想要 exactly 该功能,但这并不完全包含在问题中。 (您的标记中没有 #dev
元素,因此您并不完全清楚您希望它如何表现。)
编辑
有多种方法可以定位您想要的元素 show/hide。无需更改标记,您可能只需 get the numeric portion of the id
并使用它来构建目标 id
。可能是这样的:
$('[id^="expand"]').click(function(){
var idNumber = $(this).attr('id').replace(/expand/g, '');
$('#dev'+id).toggleClass('hidden');
});
向元素添加属性。
<i id="expand<?php echo $row['student_id'];?>" data-id="<?php echo $row['student_id'];?>" class="myclass fa fa-plus-square"></i>
在 class 上调用函数而不是在 id 上调用函数,因为有多个元素。
$('.myclass').click(function(){
var id = $(this).attr('data-id');
$('#dev-'+id).toggleClass('hidden'); // apply proper logic here.
});
您还可以在选择器中使用 .myclass
,然后从 id
中删除字符串 expand
,您从 attr()
:
$('.myclass').click(function(){
var id = $(this).attr('id').replace('expand','');
$('#dev'+id).toggleClass('hidden');
});
感谢所有参与者
但要特别感谢@david 和@deacs
我已经让它工作如下
$('[id^="expand"]').click(function(){
var id = $(this).attr('data-id');
$('#dev'+id).toggleClass('hidden');
});