通过jQuery基于链接位置进行操作

时间:2009-08-29 05:15:32

标签: php jquery find hyperlink

如何检索给定链接的rel属性的值并将其传递给处理程序?

我有一个链接列表

链接列表

<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>

这些链接由以下代码生成。 rel的以下值似乎没有传递给处理程序。

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>"
    ); 

用户点击第二个链接。 rel属性应该将答案传递给处理程序。 jQuery应该基于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");
        })
});

文件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
);

我从Postgres获取答案,同时将rel属性的值设为$ body。

2 个答案:

答案 0 :(得分:1)

好的,好吧......要回答你的第一个问题,你可以使用jQuery的index()方法获得与给定选择器匹配的元素数组中单击的元素的索引:

$('a.delete_answer').live('click', function()
{
  var index = $("a.delete_answer").index(this);
  // index will be 0 for the first matching link, 
  // 1 for the second, and so on. Do what you will with this...
  ...
});

至于你提出的其他问题,我真的不知道你在问什么。

答案 1 :(得分:1)

我可以看到此代码有几个问题:

  1. 您有多个<div id='one_answer'>。 ID应该是唯一的,因此$("#one_answer").removeClass("yellow");将始终选择第一个div ,而不是所有div。
  2. delete_an_answer.php - 在php中你正在寻找$_POST['answer'],但ajax有{question_id: jQuery(this).attr('rel')}
  3. 示例中的链接没有relhref='$',这很奇怪。 <div id='one_answer>也被打破了,应该是另一个单引号。我认为这些是复制粘贴问题。