【发布时间】:2010-03-27 22:07:02
【问题描述】:
我有这个带有文本“attivo”或“non attivo”的 href 链接
用户可以使用 ajax 请求 $.post() 在数据库中将项目设置为“活动”或“关闭”
我有两个问题:
我无法获得对 $(this) 的引用。我用普通链接尝试了它,它可以工作,但没有包含在 if/else 中??
如何防止用户多次点击链接并提交多个请求?这是一个有效的担忧吗?我需要某种小计时器之类的东西吗?
首先我在考虑一个 javascript 确认消息,但这对这个函数来说很烦人..
HTML:
<dl id='album-list'>
<dt id="dt-2">some title</dt>
<dd id="dd-2">
some description<br />
<div class='links-right'>status: <a class='toggle-active' href='#'>non attivo</a></div>
</dd>
</dl>
<a class="test" href="#">test</a>
JS:
$('dd a.toggle-active').click(function() {
var a_ref = $(this);
var id = a_ref.parent().parent().attr('id').substring(3);
if (a_ref.text() == "non attivo") {
var new_active = "active"; // for db in english
$.post("ajax-aa.php", {album_id:id, album_active:new_active},
function(data) {
// alert("success");
a_ref.text("non attivo"); // change href text
});
} else {
var new_active = "closed"; // for db in english
$.post("ajax-aa.php", {album_id:id, album_active:new_active},
function(data) {
// alert("success");
a_ref.text("attivo"); // change href text
});
}
return false;
});
$('a.test').click(function() {
var a_ref = $(this);
$.post("ajax-aa.php", {album_id:2, album_active:"active"},
function(data) {
a_ref.text("changed");
});
return false;
})
【问题讨论】:
-
在代码的某些地方插入
console.log(this),然后在Firebug中查看控制台,您就会明白this在每个点所指向的内容。 -
您的 Ajax 请求是否有可能失败?请求成功时调用回调函数。
-
它工作正常,在成功的 ajaxcall 之后,我将文本设置回原来的样子.. grr。感谢您提供有关控制台和 Firebug 的提示!
标签: jquery css-selectors