0

我有一个.php,它通过ajax 加载到一个div 中。在这个 .php 中,我有一个<a href>链接应该切换下一个<p>,显示/隐藏。但是当我将 jQuery 代码放入 .php 本身时,它不起作用。所以我意识到我可能必须将 jQuery 代码放入具有 ajax 的接收 .php 中 - 用户将在其中看到<a href>显示/隐藏<p>. 但它似乎没有做任何事情。这是html:

echo "<div><a class=\"exp\" href=\"javascript:void(0)\">View explanation: </a>";
echo "<p class=\"pexp\" style=\"display:none;\">";
echo $tfeedback;
echo "</p></div>";

jQuery:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){ 
$('.exp').on('click', function (e) {
    e.preventDefault(); // stop href()
    $(this).next().toggle();      
});
    });
</script>

$tfeedback 是字符串 - 我已经检查以确保它不为空。

4

2 回答 2

1
Please try this code hope it helps you......

$(document).delegate('.exp','click', function (e) {
    e.preventDefault(); // stop href()
   if($(this).next().css('display')=='block'){
    $(this).next().hide();
}else{
    $(this).next().show();
     }   
});

OR

$(document).on('click', '.exp', function (e) {
    e.preventDefault(); // stop href()
    if($(this).next().css('display')=='block'){
    $(this).next().hide();
}else{
    $(this).next().show();
     }      
});
于 2013-01-02T08:24:19.633 回答
0

在通过 AJAX 加载锚点和段落之前,您可能正在执行第二个片段中的代码。在这个阶段没有匹配的元素.exp,所以集合$('.exp')是空的。

解决方案是委托给已经存在的祖先:

$(document).on('click', '.exp', function (e) {
    e.preventDefault(); // stop href()
    $(this).next().toggle();      
});
于 2013-01-02T03:32:04.770 回答