- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 News Feed 页面,当页面加载时我加载了 8 个项目,当用户向下滚动到页面底部时,它将加载另外 8 个项目。加载项目不是问题。在页面中,我有一个 jquery 脚本,如果用户按下回车键则提交表单,如果用户在评论框中按下 shift+enter 键则转到下一行。它适用于前 8 个项目,但不适用于 AJAX 加载的项目。
我应该怎么做才能让 jquery 函数为通过 AJAX 加载的项目工作?
这是 feed.php 页面:
<?php
require 'includes/master.php';
include 'includes/header.php';
?>
<div class="container">
<p>
<!--UPDATE STATUS-->
<div class="row" style="margin-bottom:25px;">
<div class="col-lg-3"></div>
<div id="postedFeeds" class="col-lg-6">
<form action="" method="post" id="updateStatus">
<textarea name="status" class="updateStatusInput" placeholder="What's going on?"></textarea>
<input type="submit" name="submitstatus" value="Update" class="statussubmit hidden">
</form>
<?php getNewsFeed(); ?> <!--LOAD FIRST 8 ITMES-->
</div>
<div class="col-lg-3"></div>
</div><!--end div class row-->
<div id="loadMoreFeed" style="display:none;" ></div>
</p>
</div><!--end container div-->
<div style="clear:both;"></div>
<!--SCRIPT TO LOAD NEXT 8 ITEMS-->
<script>
$(document).ready(function() {
doMouseWheel1 = 1 ;
$("#postedFeeds").append( "<p id='feedlast'></p>" );
$(window).on('scroll', function() {
if (!doMouseWheel1)
return;
var distanceTop1 = $('#feedlast').offset().top - $(window).height();
if ($(window).scrollTop() > distanceTop1) {
$('div#loadMoreFeed').show();
doMouseWheel1 = 0 ;
$.ajax({
dataType : "html",
url: "process/loadMoreFeed.php?lastPost="+ $(".postSection:last").attr('id'),
success: function(html1) {
doMouseWheel1 = 1 ;
if(html1){
$("#postedFeeds").append(html1);
$("#feedlast").remove();
$('textarea').autosize();
$("#postedFeeds").append( "<p id='feedlast'></p>" );
$('div#loadMoreFeed').hide();
} else {
//Disable Ajax when result from PHP-script is empty (no more DB-results )
$('div#loadMoreFeed').replaceWith( " " );
doMouseWheel1 = 0 ;
}
}
});
}
});
});
<!--END SCRIPT TO LOAD NEXT 8 ITEMS-->
<!--AUTO RESIZE PLUGIN-->
$('textarea').autosize();
<!--SCRIPT TO SUBMIT FORM WHEN ENTER PRESSED AND NEW LINE WHEN SHIFT+ENTER PRESSED-->
$(function(){
$('.commentTextarea').keypress(function(event){
var id = $(this).closest(".commentForm").data("id");
if (event.keyCode==13 && !event.shiftKey) {
event.preventDefault();
$(this).closest(".commentForm[data-id='"+id+"']").submit();
return false;
}
});
<!--SCRIPT TO SUBMIT COMMENT ON ENTER-->
$(".commentForm").submit(function(event1) {
// Stop form from submitting normally
event1.preventDefault();
// Get some values from elements on the page:
var $form = $(this),
activityid = $form.data("id"),
comment = $form.find( "textarea[name='comment']" ).val(),
url = "process/insertComment.php";
// Send the data using post
var posting = $.post( url, { activityid: activityid, comment: comment } );
// Put the results in a div
posting.done(function( data ) {
$form.find('.commentTextarea').val('');
});
return false;
});
});
<!--SCRIPTS TO LOAD COMMENTS-->
$(document).ready(function(){
var id = $('.commentsContent').data("id");
$(".commentsContent[data-id='"+id+"']").load("process/loadComments.php?activityid="+id);
});
window.setInterval(function(){
var id = $('.commentsContent').data("id");
$(".commentsContent[data-id='"+id+"']").load("process/loadComments.php?activityid="+id);
}, 3000);
</script>
<?php
include 'includes/footer.php';
?>
这里是 getNewsFeed()
/*PHP variables set above. Too long to show*/
echo "
<div class='postSection' id='$activityid'>
<div class='postedFeed'>
<div class='activitypost'>
<!--IMAGE-->
<div class='postImageSection'>
<p><a href='/$activityusername'><img class='postImage' src='$activityprofilephoto'></a></p>
<p class='postUsername'><a href='/$activityusername'>$activityusername</a></p>
</div>
<!--CONTENT-->
<p class='postContent'>
";
if ($activitytype=="accountcreated") {
echo "<a href='/$activityusername'>$activityusername</a> joined StemEdNet!";
}
elseif ($activitytype=="status") {
echo "$activitycontent";
if ($activityfileid != "0") {
if ($filetype=="image/jpeg" || $filetype=="image/png" || $filetype=="image/gif" || $filetype=="image/jpg") {
echo "<div style='margin-top:10px;'><a href='$filelink' data-lightbox='image-$activityfileid'><img class='thumb' src='$filelink'></a></div>";
}
elseif ($filetype=="audio/mp3" || $filetype=="audio/mp4" || $filetype=="audio/mpeg") {
echo "<div style='margin-top:10px;'>
<audio width='100' controls>
<source src='$filelink' type='audio/mpeg'>
<source src='$filelink' type='audio/mp4'>
<source src='$filelink' type='audio/mp3'>
<embed height='50' width='100' src='$filelink'>
</audio>
</div>";
}
elseif ($filetype=="video/mp4" || $filetype=="video/mpeg") {
echo "
<div style='margin-top:0px;'>
<video width='140' height='240' controls>
<source src='$filelink' type='video/mp4'>
<source src='$filelink' type='video/mpeg'>
</video>
</div>
";
}
else {
echo "<div style='margin-top:10px;'><a target='_blank' href='?getfile=$activityfileid'>Download</a></div>";
}
}
}
echo"
</p>
</div>
<div style='clear:both;'></div>
</div>
<div class='commentSection'>
<div class='commentsContent' data-id='$activityid'>
<!--Comments are loaded into here using jQuery-->
</div>
<form class='commentForm' action='' data-id='$activityid'>
<textarea name='comment' class='commentTextarea' placeholder='Comment...'></textarea>
<input type='submit' class='hidden' name='commentsubmit' value='Comment'>
</form>
</div><!--end commentSection-->
";
echo "</div>";//end col-lg-8
}//end while
}//end getNewsFeed()
最佳答案
问题出在 .keypress() 函数上。你需要使用 jquery 的 .on()委托(delegate)事件的功能。
当您使用 .keypress() 时,它会将事件处理程序附加到当时存在的任何 .commentTextArea 元素。当您通过滚动添加新的 commentTextArea 元素时,它不会将按键事件处理程序附加到这些新元素。当您使用 .on() 函数时,它甚至会响应稍后添加的新 commentTextAreas。所以你可以这样重写它:
$('#postedFeeds').on('keypress', '.commentTextarea', function(event){
var id = $(this).closest(".commentForm").data("id");
if (event.keyCode==13 && !event.shiftKey) {
event.preventDefault();
$(this).closest(".commentForm[data-id='"+id+"']").submit();
return false;
}
});
关于javascript - jQuery 不响应 AJAX 加载的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23091068/
我正在尝试检查 Entry 中是否存在重复项,并使用内联消息提醒用户该数字存在。 $(document).ready(function(){ $("#con1").blur(function(
我有一个基于类的 View 。我在引导模式上使用 Ajax。为了避免页面刷新,我想使用此类基于 View 返回 JSON 响应而不是 HTTP 响应,但我只看到了如何为基于函数的 View 返回 JS
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个大型内部企业基于 Web 的应用程序在 IIS6 上运行 ASP.NET 3.5,生成 401 个“未经授权”响应,然后是 200 个“Ok”响应(如 Fiddler 所述)。我知道为什么会发
感谢您研究我的问题。 我有一个node/express服务器,配置了一个server.js文件,它调用urls.js,而urls.js又调用 Controller 来处理http请求,所有这些都配置相
当我使用以下命令时,我得到正确的 JSON 响应: $ curl --data "regno=&dob=&mobile=" https://vitacademics-rel.herokuapp.co
我有一个非常简单的 RESTful 服务,它通过 POST 接收一些表单数据,其目的是在云存储(Amazon S3、Azure Blob 存储等)中简单地保留文本主体(具有唯一 ID)作为一个文件..
UDP 不发送任何 ack,但它会发送任何响应吗? 我已经设置了客户端服务器UDP程序。如果我让客户端向不存在的服务器发送数据,那么客户端会收到任何响应吗? 我的假设是; 客户端 --> 广播服务器地
我有一个电梯项目,其中 有一个扩展 RestHelper 的类,看起来像这样 serve{ "api" / "mystuff" prefix { case a
我们正在寻求覆盖 Kong 错误响应结构并编写自定义消息(即用我们的自定义消息替换“超出 API 速率限制”、“无效的身份验证凭据”等)。 我们要找的错误响应结构(代码是自定义的内部错误代码,与HTT
我正在尝试监听 EKEventStoreChangedNotification 以检查当我的应用程序处于后台时日历是否已更改。 我在 View Controller 的 initWithNibMeth
我了解 javascript,并且正在学习 ASP.NET C# 我想要做什么(完成的是javascript): document.getElementById('divID-1'
是否可以过滤所有 har 对象并仅获取 POST 请求/响应?也许在初始化 BrowserMobProxyServer 期间是这样做的方法?我需要将 har 对象保存到文件中并上传到 har 查看器。
我正在尝试向 Oauth 的 API 发送响应。遗憾的是,Symfony2 文档在解释 $response->headers->set(...); 的所有不同部分方面做得很差。 这是我的 OauthC
我正在尝试测试用例来模拟 api 调用,并使用 python 响应来模拟 api 调用。 下面是我的模拟, with responses.RequestsMock() as rsps: url
在尝试在 Haskell 中进行一些领域驱动设计时,我发现自己遇到了这个问题: data FetchAccessories = FetchAccessories data AccessoriesRes
我正在与 ANT+ USB 棒连接,并用项目 react 器替换我自己天真的“MessageBus”,因为它看起来非常合适。 USB接口(interface)本质上是异步的(单独的输入/输出管道),我
我正在将项目迁移到AFNetworking 2.0。使用AFNetworking 1.0时,我编写了代码来记录控制台中的每个请求/响应。这是代码: -(AFHTTPRequestOperation *
我有以下代码段。 ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){
我有问题......我在 php 中有一个监听器脚本可以执行以下操作: if ($count != 1) {echo 'no';} else { echo "yes";} 因此它会回显"is"或“
我是一名优秀的程序员,十分优秀!