我有一个页面,我发帖,用户都要发表评论.注释使用AJAX处理.每个评论行都有一个"投票"按钮.
在索引页面中,我将jQuery函数用于投票
<script type="text/javascript">
$(function() {
$('.voteUpBtn').click(function() {
// Cast your vote
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
现在,当用户提交新注释时,它会进行AJAX调用并使用jQuery将HTML附加到索引页面
$.ajax({
type: "POST",
url: "proc/add-line.php",
data: dataString,
cache: false,
success: function(html){
$("ul#nextLines").append(html);
}
});
Run Code Online (Sandbox Code Playgroud)
在附加的HTML上,我有相同的投票按钮.(每个评论都有一个相应的投票按钮).
问题是,AJAX生成的新注释上的"投票"按钮不起作用.如果我刷新页面,则投票有效(尽管我使用相同的标记).
如何让投票按钮在AJAX中返回HTML?
我正在使用jQuery进行ajax调用,如下所示.
$.ajax({
type: "POST",
url: "proc.php",
dataType: 'json',
data: dataString,
cache: false,
success: function(data){
alert(data.vote[0].line); //Where error shows
}
});
Run Code Online (Sandbox Code Playgroud)
php页面返回的echo json_encode($string);
是
"{ 'vote' : [{ 'line' : 'newline1', 'up' : '0', 'down' : '1'},
{ 'line' : 'newline2', 'up' : '4', 'down' : '1'}
]}"
当我运行它时,会出现错误
Uncaught TypeError: Cannot read property '0' of undefined
在上面的ajax调用评论中
谁能帮我指出我做错了哪里?
更新:
变量$string
生成如下
$comma = ",";
$success = mysql_query($query, $connection);
while($row = mysql_fetch_array($success)){
$voteUp = $row['voteup'];
$voteDwn = $row['votedwn'];
$vote …
Run Code Online (Sandbox Code Playgroud) 我把我的jQuery代码作为
$('#tarea').click(function() {
// Do stuffs
});
Run Code Online (Sandbox Code Playgroud)
这适用于与此脚本一起加载的#tarea按钮.如果将来使用ajax加载按钮#tarea,则上述代码不起作用.
现在我将代码更改为
$('#tarea').live('click', function() {
// Do stuffs
});
Run Code Online (Sandbox Code Playgroud)
这次,#tarea按钮与脚本一起加载不起作用.但是如果使用ajax生成,则脚本可以使用该按钮.
我如何编写脚本,以便在这两种情况下,它的工作原理?
我有一张表格.
<form action="inc/genxml.php" method="post">
<input id="nameTxt" name="name" type="text" value="test"/>
<button id="nameSave" class="left">Save</button>
</form>
Run Code Online (Sandbox Code Playgroud)
还有一个div元素#name
当我单击"保存"按钮时,我想将div #name的位置传递给表单操作文件.为了得到这个位置,我正在使用jQuery .position().
像下面的东西.(只打印出坐标)
$('#nameSave').click(
function() {
var pos = $('#name').position();
alert("left: " + pos.left + ", top: " + pos.top );
}
);
Run Code Online (Sandbox Code Playgroud)
我想将坐标值(pos.left和post.top)传递给表单操作文件(在本例中为genxml.php文件).
我该怎么办?
我把我的HTML代码作为
<li><button id="1" class="vote btn" type="button" /></li>
<li><button id="2" class="voteUp btn" type="button" /></li> // Only button with class= voteUp
<li><button id="3" class="vote btn" type="button" /></li>
<li><button id="4" class="vote btn" type="button" /></li>
.
.
.
<li><button id="x" class="vote btn" type="button" /></li>
Run Code Online (Sandbox Code Playgroud)
现在通过jquery,当我点击任何这些按钮时,我想找出已经获得类"voteUp"的按钮的id.(这个班级只有一个按钮).
我怎么能找到它?我试图弄清楚使用.hasClass()
但直到现在还没有成功.请帮助.
更新:
实际的HTML和PHP代码
<li class="box">
<div class="temLine">This is the fifth line</div>
<div class="pushUp"><input id="line5" class="voteUpBtn vote" name="voteUp" type="button" /></div>
<div class="userName clear">- by ptamzz</div>
<div class="clear"></div>
</li>
Run Code Online (Sandbox Code Playgroud)
上面的代码将使用PHP循环,并生成一个列表.就像我说的,其中一个按钮(此处输入)将具有'voteUp'类,而其他所有按钮都具有'投票'类.
我想在用户提交表单后正好调用函数30分钟.我正在使用javascript setTimeOut()函数,但在页面刷新或浏览器关闭时清除了计时器.无论是什么(浏览器是关闭还是刷新),我想在30分钟之后准确调用该功能,并且我还希望将剩余时间显示为30分钟以及.
我查看了Cron的工作,但我的理解是PHP无法直接调用cron作业.
谁能告诉我这样做的最佳方法是什么?
我有一份清单
<ul>
<li><a href="?page=4">one</li> //no 4
<li><a href="?page=7">two</li> //no 7
<li><a href="?page=14">three</li> //no 14
<li><a href="?page=72">four</li> //no 72
<li><a href="?page=201">five</li> //no 201
</ul>
Run Code Online (Sandbox Code Playgroud)
现在我想使用ajax来加载页面而不是正常的页面加载.那么如何检测用户使用jQuery点击的链接.说点像
$('id of the element clicked').click(function()({
// Load the page using .ajax()
});
Run Code Online (Sandbox Code Playgroud)
在上面的jQuery代码中,我该怎么做id of the element clicked
?
我的标记是
<div id="wrap">
<div class="clickhere"></div>
<div class="clickhere"></div>
<div class="clickhere"></div>
<div class="clickhere"></div>
<div class="clickhere"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
现在,我想<div class="clickhere"></div>
在使用jQuery单击div之后添加另一个.我想到了.append()
或者.prepend()
它只在父元素的最后一个或第一个添加(如果在父元素处应用).
$('.clickhere').click(function(){
// add <div class="clickhere"></div> just below $(this)
})
Run Code Online (Sandbox Code Playgroud) 我把我的div作为
<div id="summary" style=" width: 900px; margin: 0 auto;" >
HTML content
</div>
<div id="details" style=" width: 900px; margin: 0 auto; display: none;" >
Detail content
</divs>
Run Code Online (Sandbox Code Playgroud)
我的jquery代码就像
$('#button').click( function() {
$('#details').show('slide', { direction: 'right' }, 1000);
$('#summary').hide('slide', { direction: 'left' }, 1000);
});
Run Code Online (Sandbox Code Playgroud)
实现此功能时,div#summary
左侧的滑出触摸显示器显示屏的边缘,div#details
从右侧滑入而不是从显示器边缘滑入.
我希望div#details
从最右边滑入,这样看起来div正从屏幕外滑入.
我该怎么做?