在下面的例子中,我有一个脚本的循环,从数据库中获取评论,并给每个评论一个表单与文本区和提交按钮,以便用户可以与每个评论单独交互。
由于文本区域的重复,下面的代码使页面看起来非常混乱和令人不安。
我需要的是一个jQuery代码,将隐藏文本区域,并允许我显示一个选定的文本区域单独当一个链接或div被点击。我将在下面的代码中简化我想要的内容。
<?php
$comments = array('comment1','comment2','comment3','comment4','comment5','comment6','comment7','comment8','comment9');
$c_count = count($comments);
for($i=0; $i<$c_count; $i++){
$comment = $comments[$i];
echo $comment;
?>
<hr />
<div style="border:1px solid #999; width:200px;">Click Here to Show Reply Form</div>
<div class="comment_box">
<form action="path/to/insert_reply.php" method="POST">
<textarea name="reply" cols="47" rows="4"></textarea>
<input type="submit" name="submit" value="Post Reply">
</form>
</div>
<?php
}
?>
这可以很容易地用JQuery完成。http://api.jquery.com/会很有帮助。
在本例中,客户端可以单击comment_headerdiv来查看或隐藏评论框。注意,我在div中添加了一个额外的标识符。选择单个div元素有许多不同的方法—您可以考虑将comment_header和comment_boxdiv都包装在具有唯一id属性的容器div下。这里,我选择使用JQuery的.data()功能。
PHP:<?php
$comments = array('comment1','comment2','comment3','comment4','comment5','comment6','comment7','comment8','comment9');
$c_count = count($comments);
for($i=0; $i<$c_count; $i++){
$comment = $comments[$i];
echo $comment;
?>
<hr />
<div data-index="<?= $i; ?>" style="border:1px solid #999; width:200px;">Click Here to Show Reply Form</div>
<div id="<?= $i; ?>" class="comment_box">
<form action="path/to/insert_reply.php" method="POST">
<textarea name="reply" cols="47" rows="4"></textarea>
<input type="submit" name="submit" value="Post Reply">
</form>
</div>
<?php
}
?>
JS/JQuery: $(document).ready(function(e) {
$('.comment_box').hide();
$('.comment_header').on('click', function(e) {
$('#' + $(this).data('index')).toggle();
});
});
希望这是有帮助的。下面是JSFiddle: http://jsfiddle.net/EUQG2/
在特定文本区域聚焦时隐藏未选中的textarea
$(document).ready(function(){
$('textarea').focus(function(){
$('textarea').not(this).hide();
});
});
你可以玩这个。希望对大家有所帮助
最简单的情况是,假设您想要做的是隐藏textarea元素(在本例中是隐藏父.comment_box
元素),并通过单击前面的div
元素来显示它们:
$('.comment_box').hide().prev('div').on('click', function(){
$(this).next('.comment_box').toggle();
});
JS Fiddle demo.
如果您想在任何给定点只看到一个.content_box
/textarea
:
$('.comment_box').hide().prev('div').on('click', function(){
var target = $(this).next('.comment_box');
$('.comment_box').not(target).hide();
target.toggle();
});
JS Fiddle demo.
引用:
-
hide()
. -
next()
. -
not()
. -
on()
. -
prev()
. -
toggle()
.