0

我有从数据库回显的结果,我已经包含了 jquery 扩展代码以在单击标题时展开 div,但是当前当单击一个结果的标题时,所有其他回显的 div 都会展开。

有人可以帮我做到这一点,以便只有点击的 div 展开。感谢您的任何帮助或建议!

这是脚本:

<script type="text/javascript">
$(document).ready(function(){
$(".expanderHead").click(function(){
    $("#expanderContent").slideToggle();
    if ($("#expanderSign").text() == "+"){
        $("#expanderSign").html("−")
    }
    else {
        $("#expanderSign").text("+")
    }
});
});
</script>

这是回声语句:

    echo "<table width='50%' style='border-bottom:1px solid #000000;'";
echo "<tr>";
echo "<td>";
echo "<div id='page-wrap'>";
echo "<div class='discounted-item freeshipping'>";

echo "<a href='./img/users/" . $row['category'] . "/" . $row['username'] . "/" . $row['filename'] . "' rel='lightbox'><img src=\"./img/users/" . $row['category'] . "/" . $row['username'] . "/" . $row['filename'] . "\" alt=\"\" width='15%' height='80%' /></a>";


echo "<div id='expanderHead'>";
echo "<div class='reasonbar'><div class='prod-title' style='width: 70%;'>" .$row['fname'] . "</div><div class='reason' style='width: 29%;'><b>". $row['firstname'] . " " . $row['surname'] ."</b></div></div>";


echo "<div id='expanderContent' style='display:none'><div class='reasonbar'><div class='prod-title1' style='width: 70%;'>" . $row['lname'] . "</div><div class='reason1' style='width: 29%;'>Category:<br /> ". $row['category'] . "</div></div></div>";

echo "<div class='reasonbar'><div class='prod-title2' style='width: 70%;'><a href='#' data-reveal-id='myModal".$count."'>Click here For more info</a></div><div class='reason2' style='width: 29%;'>Price: &pound;". $row['price'] . "</div></div>";


echo "</div>";
echo "</td>";
echo "</tr>";
echo "</td>";
echo "</tr>";
echo "</table>";
4

2 回答 2

1

可能是因为您正在扩展整体而不是clicked.class的唯一。#iddiv

关于你的评论

好的,谢谢你清除这个问题,你知道我如何在 div id 名称中添加一个计数函数以便它可以工作吗?

看看这是否可以帮助您:

动态 id 与 php
http://perishablepress.com/dynamic-body-class-id-php-wordpress/

带有 jquery 的动态 id
带有动态 id 的 jQuery 选择

于 2012-09-24T17:34:03.677 回答
1

您可以尝试在内部使用 $(this) 来仅查找相对于当前单击的元素

$(document).ready(function(){    
    $(".expanderHead").click(function(){
        var $exsign = $("#expanderSign");
        $(this).find("#expanderContent").slideToggle();
        $exsign.html($exsign.text() == '+' ? '-': '+');   
        // simplify your if/else into one line using ternary operator
        // if  $exsign.text() == "+" then use "-" else "+"
    });    
});
于 2012-09-24T17:53:48.370 回答