如何使用 jquery 从 php 变量中显示 div
Posted
技术标签:
【中文标题】如何使用 jquery 从 php 变量中显示 div【英文标题】:How to make a div appear from a php variable using jquery 【发布时间】:2012-06-29 02:30:10 【问题描述】:我正在填充来自 foreach 循环的复选框列表,并为每个复选框提供一个 ID。我在下面添加了一组会出现的 div,具体取决于创建的复选框。我在想我可以将 id 变量加载到 jQuery if 语句中,然后使用 .toggle 来显示或隐藏相应的 div。
<?php
//Call Programs
$getPrograms = Doctrine::getTable('Program')->createQuery()->where('subsection=?', 'mfa')->orWhere('subsection=?', 'mps')->orWhere('subsection=?', 'mat')->orWhere('subsection=?', 'ma')->orderBy('title ASC')->execute(); ?>
<div class="form_row">
<label>
<span><sup class="required_form_item">*</sup>Select Program</span>
</label>
<div class="buttonColumn" style="margin-left:170px;">
//loop the records in with checkboxes
<?php foreach ($getPrograms as $prog): ?>
<?php
$subsection = $prog->getSubsection();
$subsection = strtoupper($subsection);
$trimProg = trim($prog->getTitle(), ' ');
$removeChars = array(" ", "&");
$trimProg = str_replace( $removeChars, '', $trimProg );
$trimProg = preg_replace('/\s\s+/', '_', $trimProg);
?>
//custin id matches record title
<input type="checkbox" name="program" class="isChecked" id="<?php echo $trimProg; ?>" value="<?php echo $subsection . " " . $prog->getTitle() ?>" /><?php echo $subsection . " " . $prog->getTitle() ?><br />
<?php endforeach ?>
</div>
</div>
在选中匹配的复选框之前,以下 div 将设置为 display:none。
<div class="form_row sessionTime" id="Program1" style="display:none;">
Please choose an session time:
<input type="checkbox" name="schedule" value="5:00 pm" />5:00 pm<br />
</div>
<div class="form_row sessionTime" id="program2" style="display:none;">
Please choose an session time:
<input type="checkbox" name="schedule" value="10:00 pm" />10:00 pm<br />
</div>
...
这就是我认为可行的方法......但是唉......它没有
$('.isChecked').click( function()
if ( $(this).is(':checked') )
$thisID = $(this).attr("id");
$('.'+ $thisID).show();
else
$('.'+ $thisID).hide();
);
【问题讨论】:
$thisID = "form_row" 还是 "sessionTime"?否则你的选择器永远不会匹配。我想说你想做点别的,因为从你的代码看来'.'+ $thisID
与你认为的不匹配。
目标是使 $thisID = 复选框的 id。这就是我尝试 $(this).attr("id"); 的原因
【参考方案1】:
您应该使用“Program1”作为class
名称,而不是像这样的id
<div class="form_row sessionTime Program1" style="display:none;">
Please choose an session time:
<input type="checkbox" name="schedule" value="5:00 pm" />5:00 pm<br />
</div>
你的 jQuery 代码应该可以工作,你可以简化如下:
$('.isChecked').click( function()
if ( $(this).is(':checked') )
$('.'+ this.id).show();
else
$('.'+ this.id).hide();
);
【讨论】:
【参考方案2】:我在@home 测试了这段代码,它可以按照您的需要运行
<html>
<head>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script>
$(document).ready(
function()
$('.isChecked').click(
function()
if ( $(this).is(':checked') )
$(this).show();
else
$(this).hide();
);
);
</script>
</head>
<body>
<form>
<input type="checkbox" name="program" class="isChecked"/>
<input type="checkbox" name="program" class="isChecked"/>
<input type="checkbox" name="program" class="isChecked"/>
<input type="checkbox" name="program" class="isChecked"/>
</form>
</body>
我认为您的代码中的问题可能来自 $(document).ready() 处理程序,该处理程序在将动作侦听器绑定到它之前等待整个 DOM 被加载。 更重要的是,您的 jquery 代码对我不起作用。我的版本似乎可以工作,但是一旦复选框被隐藏,用户就无法再处理它们了。
否则,我认为在您的模板中执行一些 Doctrine 请求是一个非常糟糕的主意。
再见!
【讨论】:
如果我没看错的话,这会使复选框消失。不是目标。我想在复选框下方的 div 上切换可见性。我同意 Doctrine pull 不属于模板。虽然它在“视图”中,但它正在调用表单一个自定义表单,该表单是从操作中生成的。以上是关于如何使用 jquery 从 php 变量中显示 div的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 POST 方法将 javascript/jQuery 变量传递给 PHP [重复]
在 jquery 中发布数据时如何使用 jquery UI 使 post.php 弹出消息