使用Jquery和PHP切换foreach循环中div的显示/隐藏
php foreach循环在显示/隐藏或切换方面有点问题 我的php如下所示:使用Jquery和PHP切换foreach循环中div的显示/隐藏,php,jquery,foreach,toggle,show-hide,Php,Jquery,Foreach,Toggle,Show Hide,php foreach循环在显示/隐藏或切换方面有点问题 我的php如下所示: <?php $keys = $personArray; foreach($keys as $key){ $key = get_field_object($key); $key_NAME = $key['name']; $key_NAME2 = $key['name2']; $key_TYPE = $key['type']; echo '<div style="display:block;
<?php
$keys = $personArray;
foreach($keys as $key){
$key = get_field_object($key);
$key_NAME = $key['name'];
$key_NAME2 = $key['name2'];
$key_TYPE = $key['type'];
echo '<div style="display:block;margin-botton:4px;">';
echo '<span id="kname" class="hide">' . $key_NAME . '</span><span id="kname2" class="hide"' . $key_NAME2 . '</span>';
echo ' | ';
echo '<span id="ktype" class="hide">' . $key_TYPE . '</span>';
echo '</div>';
}
//I will get;
/*
JamesJack | Artist
SamMike | Singer
CurtTrisha | Dancer
*/
?>
但是我需要使用带有复选框的jQuery显示/隐藏键类型,并在键名称和键名称之间切换2
我怎样才能做到这一点?我当前的代码只影响第一行结果
以下是代码的其余部分:
<style>
.hide{display:none;}
</style>
<script>
jQuery(document).ready(function($){
$('input[type="checkbox"]').click(function(){
if($(this).attr("value")=="changename"){
$("#kname").toggle();
}else{
$("#kname2").toggle();
}
if($(this).attr("value")=="hidetype"){
$("#ktype").toggle();
}
});
});
</script>
<html>
<label><input type="checkbox" name="vauChange" value="changename"> Toggle name</label>
<label><input type="checkbox" name="vauChange" value="hidetitle"> Hide Title</label>
</html>
.hide{display:none;}
jQuery(文档).ready(函数($){
$('input[type=“checkbox”]”)。单击(函数(){
if($(this.attr(“value”)==“changename”){
$(“#kname”).toggle();
}否则{
$(“#kname2”).toggle();
}
if($(this.attr(“value”)==“hidetype”){
$(“#ktype”).toggle();
}
});
});
切换名称
隐藏标题
我的代码工作不正常。您正在所有元素上添加相同的id 首先,对元素使用类而不是id
echo '<div style="display:block;margin-botton:4px;">';
echo '<span class="kname hide">' . $key_NAME . '</span><span class="kname2 hide"' . $key_NAME2 . '</span>';
echo ' | ';
echo '<span class="ktype hide">' . $key_TYPE . '</span>';
echo '</div>';
})) 我喜欢在jquery中使用数据属性以方便访问
<?php
$keys = $personArray;
foreach($keys as $key){
$key = get_field_object($key);
$key_NAME = $key['name'];
$key_NAME2 = $key['name2'];
$key_TYPE = $key['type'];
echo '<div style="display:block;margin-botton:4px;">';
echo '<span class="hide change-name" data-name1="'.$key_NAME.'" data-name2="'.$key_NAME2.'">'.$key_NAME.'</span>';
echo ' | ';
echo '<span class="hide toggle-title">'.$key_TYPE.'</span>';
echo '</div>';
}
?>
<html>
<label><input type="checkbox" name="vauChange" value="changename" id="toggle-name-box"> Toggle name</label>
<label><input type="checkbox" name="vauChange" value="hidetitle" id="toggle-title-box"> Hide Title</label>
</html>
<script>
$('#toggle-name-box').click(function() {
$('.change-name').each(function() {
cur = $(this).text();
$(this).text(cur == $(this).data('name1') ? $(this).data('name2') : $(this).data('name1'));
});
});
$('#toggle-title-box').click(function() {
$('.toggle-title').each(function() {
$(this).toggleClass('hide');
});
});
</script>
切换名称
隐藏标题
$(“#切换名称框”)。单击(函数(){
$('.change name')。每个(函数(){
cur=$(this.text();
$(this).text(cur==$(this.data('name1')?$(this.data('name2'):$(this.data('name1'));
});
});
$(“#切换标题框”)。单击(函数(){
$('.toggle title')。每个(函数(){
$(this.toggleClass('hide');
});
});
和jsfiddle
id=“kname”
——所有元素都具有相同的id,这是非法的。DOM ID在整个文档中必须是唯一的。由于它们必须是唯一的,getElementById将只返回它找到的第一个匹配元素,因为在同一文档中的其他地方不可能有任何重复的ID。那么我该如何使每个输出唯一?如果我点击chkbox,所有元素都会像它应该的那样隐藏吗?但这会在“foreach”语句中起作用吗。请记住,只有一个回显行隐藏,其他行不隐藏,即使它们具有相同的id或类名。我的意思是“ktype”和“hidetype”作为值。我已经更新了thx。谢谢@DaveK。您在JSFIDLE中提供的示例似乎有问题。在您的示例中,一个项目的“data-name1”与第二个项目不同,第一个项目上有data-name1=“keyname1”,第二个项目上有data-name1=“keyname2”,两者应该相同,对吗?列表将打印为:code/*James-Artist,James-Singer,James-Dancer*/
我想把所有的James换成JackNo他们需要不同。我在数据属性中存储这两个备选名称,以便在它们之间切换。基本上,它会检查范围中的当前文本是否为name1,如果是,则将其更改为name2,如果不是,则将其更改为name1。我已经更新了JSFIDLE以反映您的输出示例。
<?php
$keys = $personArray;
foreach($keys as $key){
$key = get_field_object($key);
$key_NAME = $key['name'];
$key_NAME2 = $key['name2'];
$key_TYPE = $key['type'];
echo '<div style="display:block;margin-botton:4px;">';
echo '<span class="hide change-name" data-name1="'.$key_NAME.'" data-name2="'.$key_NAME2.'">'.$key_NAME.'</span>';
echo ' | ';
echo '<span class="hide toggle-title">'.$key_TYPE.'</span>';
echo '</div>';
}
?>
<html>
<label><input type="checkbox" name="vauChange" value="changename" id="toggle-name-box"> Toggle name</label>
<label><input type="checkbox" name="vauChange" value="hidetitle" id="toggle-title-box"> Hide Title</label>
</html>
<script>
$('#toggle-name-box').click(function() {
$('.change-name').each(function() {
cur = $(this).text();
$(this).text(cur == $(this).data('name1') ? $(this).data('name2') : $(this).data('name1'));
});
});
$('#toggle-title-box').click(function() {
$('.toggle-title').each(function() {
$(this).toggleClass('hide');
});
});
</script>