根据jQuery的链接位置做出一个动作 [英] To make an action based on the link location by jQuery
问题描述
我有一个列表,它是一个列表链接列表
链接列表
< div id ='one_answer'> Answer1
< a href =$class =delete_answer ='Answer1'> delete< / a>
< / div>
< div id ='one_answer'> Answer2
< a href =$class =delete_answer ='Answer2'> delete< / a>
< / div>
< div id ='one_answer'> Answer3
< a href =$class =delete_answer ='Answer3'> delete< / a>
< / div>
这些链接由以下代码生成。
以下rel值似乎不会传递给处理程序。
由PHP生成的链接
$ b $
echo($ answer。< a href ='#'
。class ='delete_answer'
。rel ='。$ body。'//根据答案的正文
//在数据库
中标识答案
//> delete< ; / a>
);
用户点击第二个链接。
rel属性应该将答案传递给处理程序。
jQuery应该根据POST数据执行以下操作。
$ b jQuery
jQuery('a.delete_answer')。live('click',function(){
jQuery.post('/ codes / handlers / delete_an_answer.php ',
{delete_answer:jQuery(this).attr('rel')},
function(){
$(#one_answer)。removeClass(yellow);
})
});
文件delete_an_answer.php
$ dbconn = pg_connect(host = localhost port = 5432 dbname = masi user = masi password = 123);
//删除答案
$ result = pg_query_params($ dbconn,
'DELETE FROM answers
WHERE answer = $ 1',
array($ _POST ['answer '])//这里的问题,因为
// $ _POST ['answer']在它到达
//时是空的,所以没有答案被删除
);
我从Postgres获取答案,同时把rel属性的值设置为$ body 。
我可以看到这个代码的几个问题:
- 您有多个
< div id ='one_answer'>
。 ID应该是唯一的,所以$(#one_answer)。removeClass(yellow);
将始终选择第一个div
- delete_an_answer.php - 在php中,您正在寻找
$ _ POST ['answer']
,但是ajax已经{question_id:jQuery(this).attr('rel')}
。 - 示例中的链接没有
rel
和href ='$'
,这很奇怪。另外< div id ='one_answer>
已损坏,应该是另一个单引号。我认为这些是复制粘贴的问题。
How can you retrieve the value of the rel attribute of a given link and pass it to the handler?
I have a list of links such that
Link list
<div id='one_answer'>Answer1
<a href="$" class="delete_answer" rel='Answer1'>delete</a>
</div>
<div id='one_answer'>Answer2
<a href="$" class="delete_answer" rel='Answer2'>delete</a>
</div>
<div id='one_answer'>Answer3
<a href="$" class="delete_answer" rel='Answer3'>delete</a>
</div>
These links are generated by the following code. The following value of the rel does not seem to be passed to the handler.
Links generated by PHP
echo ($answer . "<a href='#'"
. "class='delete_answer'"
. " rel='" . $body . "'" // I identify the answer
// by the body of the answer
// in the database
. ">delete</a>"
);
The user clicks the second link. The rel attribute should pass the answer to the handler. jQuery should perform the following action based on the POST -data.
jQuery
jQuery('a.delete_answer').live('click', function(){
jQuery.post('/codes/handlers/delete_an_answer.php',
{ delete_answer: jQuery(this).attr('rel') },
function(){
$("#one_answer").removeClass("yellow");
})
});
The file delete_an_answer.php
$dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123");
// remove the answer
$result = pg_query_params ( $dbconn,
'DELETE FROM answers
WHERE answer = $1',
array ($_POST['answer'] ) // Problem here, because
// $_POST['answer'] is empty when it gets here
// so no answer is deleted
);
I fetch answers from Postgres and put at the same time the value of the rel attribute to be $body.
I can see several problems with this code:
- You have more than one
<div id='one_answer'>
. IDs should be unique, so$("#one_answer").removeClass("yellow");
will always select the first div, not all divs. - delete_an_answer.php - In the php you're looking for
$_POST['answer']
, but the ajax has{question_id: jQuery(this).attr('rel')}
. - The links in your sample don't have a
rel
, andhref='$'
, which is weird. Also<div id='one_answer>
is broken, should be another single quote. I assume these are copy-paste problems.
这篇关于根据jQuery的链接位置做出一个动作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!