fade通过id切换div容器

时间:2014-04-10 11:56:57

标签: javascript php jquery html

我有这个功能:

function showHideLayer(id)
{
    $("#" + id).fadeToggle();
}

和这个PHP代码:

echo "
<a id=\"answer-".$i."\" href=\"#\" onlick=\"showHideLayer('subMessages-".$i."'')\">
<b>".count($ansPostId)."</b> Antworten</a>
<br>
<div id=\"subMessages-".$i."\" style=\"display: none;\">
message
</div>

但它不起作用

任何人都可以帮助我吗?

它应该通过点击Link来切换div。

谢谢=)

5 个答案:

答案 0 :(得分:3)

你拼错了onclick。你也有一个糟糕的报价订单。

以下是另一个建议:如何使用jQuery:

echo '<a id="answer-'.$i.'" href="#" class="answer" data-submessages="'.$i.'">
    <b>'.count($ansPostId).'</b> Antworten
</a>
<br>
<div id="subMessages-'.$i.'" style="display: none;">
    message
</div>';

和javascript:

$(document).ready(function() {
    $('.answer').click(function() {
        var sm_id = $(this).attr('data-submessages');
        $('#subMessages-' + sm_id).fadeToggle();
    });
});

这是一个工作示例: http://jsfiddle.net/USWVJ/

对于动态添加的DOM元素:

$(document).on('click', 'element', function)

$(document).ready(function() {
    $(document).on('click', '.answer', function () {
        var sm_id = $(this).attr('data-submessages');
        $('#subMessages-' + sm_id).fadeToggle();
    });
});

答案 1 :(得分:1)

拼错&#34; onlick&#34; =&GT; &#34;的onclick&#34;

答案 2 :(得分:1)

因为你已经在使用jQuery了。使用Attribute starts with selector.试试这个:

$("a[id^=answer]").click(function(e){
    e.preventDefault();
    $("div#subMessages-"+$(this).attr("id").split("answer-")[1]).fadeToggle();
});

<强> DEMO

答案 3 :(得分:1)

看起来在showHideLayer函数的id末尾有一个单引号太多。

替换此......

onclick=\"showHideLayer('subMessages-".$i."'')\"

......有了......

onclick=\"showHideLayer('subMessages-".$i."')\"

已编辑说实话,我之前没有看到这个,只是复制了你的代码,但事实上,onclick错过了代码c 。感谢@Henriksjodahl首先发现这一点的人。

答案 4 :(得分:0)

因为您正在使用JQuery,请尝试以下操作:

$(docuemnt).ready(function(){
   // if a link of class myclass is clicked this action is triggerd
   $("a.myclass").click(function(){
        e.preventDefault();// prevent default action
        var submsgid = "subMessages"+$(this).attr("id").split("answer-")[1];
        $("div#"+submsgid).fadeToggle();
   });
});

尽量避免混合(&#34;)和(&#39;)。这可能看起来更干净:

// your php code
?>
<a id="answer-<?php echo $i;?>" class="myclass" href="#">
    <b><?php echo count($ansPostId); ?></b> Antworten
</a>
<br>
<div id="subMessages<?php echo $i; ?>" style="display: none;">
   message
</div>
<?php
// your php code
相关问题