gpt4 book ai didi

javascript:我希望单选按钮操作根据从数据库获取的循环进行更改

转载 作者:行者123 更新时间:2023-12-02 18:10:53 26 4
gpt4 key购买 nike

我的代码是从数据库中获取数据(假设有4条记录)。当我更改单选按钮时,只有第一个循环起作用。下面是我的代码:

PHP 代码

while($row = mysql_fetch_array($sql)){
echo "<div class='loop'>";

echo "<p><input type='checkbox' name='content_type' value='1' /></p>";
echo "<p><input type='checkbox' name='content_type' value='2' /></p>";
echo "<p><input type='checkbox' name='content_type' value='3' /></p>";

//content_a
echo "<div id='content_a' style='display:none;'>";
echo "<textarea name='text' id='textarea0'><textarea>";
echo "</div>";

//content_b
echo "<div id='content_b' style='display:none;'>";
echo "<textarea name='text' id='textarea1'><textarea>";
echo "</div>";

//content_c
echo "<div id='content_c' style='display:none;'>";
echo "<textarea name='text' id='textarea2'><textarea>";
echo "</div>";

//button
echo "<div class='button'>";
echo "<a class="tweet1" href="#" onclick="return false;">Alert</a>";
echo "</div>";

echo "</div>";
}

Javascript

$('input[name=content_type]').bind('change', function(){
var n = $(this).val();
switch(n)
{
case '1':
$(this).parents('.loop').find('#content_a').show(1000);
$(this).parents('.loop').find('#content_b').hide(1000);
$(this).parents('.loop').find('#content_c').hide(1000);
break;
case '2':
$(this).parents('.loop').find('#content_b').show(1000);
$(this).parents('.loop').find('#content_a').hide(1000);
$(this).parents('.loop').find('#content_c').hide(1000);
break;
case '3':
$(this).parents('.loop').find('#content_c').show(1000);
$(this).parents('.loop').find('#content_a').hide(1000);
$(this).parents('.loop').find('#content_b').hide(1000);
break;
}
});

我希望单选按钮操作根据从数据库获取的循环进行更改。我上面的代码,只有第一个循环有效。如何解决这个问题?

最佳答案

这是因为 id 应该始终是唯一的...这里(在您的代码中)您有多个具有相同 id id='content_a' 的元素(因为它是在循环内)。将其更改为类并使用类选择器

试试这个

html

  echo "<div class='content_a' style='display:none;'>";
//---^^^^^ here

jquery

  $(this).parents('.loop').find('.content_a').show(1000);\
//-------^-----here

同样更改所有其他 id 选择器

虽然 parents('.loop') 有效。我建议使用 closest() 以获得更好的性能

  $(this).closest('.loop').find('.content_a').show(1000);

是的..如果你正确地改变你的html,你可以将代码减少到两行..

首先更改您的内容以与复选框值匹配..

echo "<div class='content_1' style='display:none;'>";  //here class='content_' + value of checkbox
.....
echo "<div class='content_2' style='display:none;'>";
... //so on

试试这个

$('input[name=content_type]').bind('change', function(){
var n = $(this).val();
$('div[class^="content_"]').hide(); //hide all div
$(this).closest('.loop').find('.content_' + n).show(1000); //so particular div
});

关于javascript:我希望单选按钮操作根据从数据库获取的循环进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19723964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com