根据jQuery的链接位置做出一个动作 [英] To make an action based on the link location by jQuery

查看:150
本文介绍了根据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 。

解决方案

我可以看到这个代码的几个问题:


  1. 您有多个< div id ='one_answer'> 。 ID应该是唯一的,所以 $(#one_answer)。removeClass(yellow); 将始终选择第一个div
  2. delete_an_answer.php - 在php中,您正在寻找 $ _ POST ['answer'] ,但是ajax已经 {question_id:jQuery(this).attr('rel')}

  3. 示例中的链接没有 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:

  1. 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.
  2. delete_an_answer.php - In the php you're looking for $_POST['answer'], but the ajax has {question_id: jQuery(this).attr('rel')}.
  3. The links in your sample don't have a rel, and href='$', which is weird. Also <div id='one_answer> is broken, should be another single quote. I assume these are copy-paste problems.

这篇关于根据jQuery的链接位置做出一个动作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆