我希望做一些事情:
<textarea>
框时,请关注<div>
。<div>
框<textarea>
。所以我要么需要一种方法来使用jQuery将字符串放入<textarea>
或自动展开<div>
以显示<textarea>
,其中包含字符串以进行编辑。由于我之前的一个问题,我已经扩展/崩溃工作:Expanding / Collapsing divs
内容由PHP / MySQL生成。
这是我的小提琴:http://jsfiddle.net/Draven/kUhkP/85/
很抱歉,如果我遗漏了任何重要信息,如果我想到我应该添加的内容,我会编辑这篇文章。
更多关于#3
单击“编辑”链接时,页面“刷新”(它是相同的页面但URL更改),他们想要编辑的内容现在显示在<textarea>
框中。当页面更改时,它会显示折叠了所有<div>
个框的页面。
我需要<div>
,<textarea>
中的可修改内容会自动展开。
有没有办法检查<textarea>
是否有内容,然后<div>
展开了?
答案 0 :(得分:2)
尝试this:
$(document).on('click', '.postreply', function(e) {
$(this).closest('.blogcontainer').siblings('.blogcontainer').find('.postreplycontainer').slideUp("fast");
$(this).closest('.blogcontainer').find('.postreplycontainer').slideToggle("fast")
.find('textarea[name=replycontents]').focus();
});
在这里,我使用$(document).on
来delegate
一个事件到所有元素,无论是现在还是未来(动态)。请注意,如果您曾经使用过jQuery * pre * 1.7,那么您只需将.on
更改为.delegate
即可。由于它是委托,.delegate
似乎一度适当,但时代已经改变。现在,如果你愿意,你仍然可以使用'.delegat'。 jQuery已经注意到他们没有“弃用”,也不打算删除.delegate
。他们只是觉得1.7中.on
的实施已被取代.delegate
,因此他们建议使用.on
进行委派。
除了.on
之外,使用委托形式的$(selector)
非常简单,正如您所看到的那样。规则很简单。 $(document)
应该是“存在onload”的“父”元素,或者您只需使用.on
即可。
您的event
参数同样简单。第一个参数是您要分配的'change keydown'
的字符串名称。请记住,您可以只使用空格分配多个事件; exp 'div'
(这是textareas的流行事件分配)。
第二个参数与任何其他jQuery选择器一样。请记住,将分配符合要求的所有元素。所以e
之类的东西会为所有div元素分配一个事件。
最后一个是“回调”方法。 event Object
当然代表传入的e.target
。例如,$(this)
在函数中与$('.blogcontainer textarea[name=replycontents]').filter(function(i) { return $.trim($(this).val()) != ""; }).closest('.postreplycontainer').slideDown("fast");
至于 #3
如果您每次都在重新加载页面,那么只需找到包含内容的第一个文本区域并下载其父容器即可。这只是意味着添加一行简单的代码:
$('.blogcontainer textarea[name=replycontents]')
要打破一些:
.filter(function(i) { return $.trim($(this).val()) != ""; })
:我认为您现在已经了解了选择器,但只是注意,请记住,您可以使用“任何”CSS选择器作为jQuery选择器。(i)
:这个方便的小jQuery方法允许我们根据给定的回调“过滤”我们的“选择”结果。
.closest('.postreplycontainer')
代表 index ,基于0。.slideDown("fast");
:只需抓取与选择器匹配的最近父元素。
见Fiddle Here!请记住,我不会“重新加载”页面或任何东西。但是通过在那里排队,第一个包含内容的框将始终向下滑动。如果不需要,您可能需要使用jQuery's Ajax来编辑框。
答案 1 :(得分:1)
$("a.postreply").click(function () {
$('.postreplycontainer').hide();
$(this).closest('.blogcontainer').find('.postreplycontainer').slideToggle("fast");
//$('.replycontents').blur();
$(this).closest('.blogcontainer').find('.replycontents').focus();
});
照顾1和2.我不明白第3点。