使用this.text()和jquery检索文本

时间:2009-08-07 15:06:48

标签: javascript jquery html ajax

我正在尝试使用此

获取点击链接中的文本
    $(".ajax-append").click(function(event) { 
     $.get("includes/fight.php?name=test", function(html) { 

     console.log($(this).text());
     console.log($(this));

        // append the "ajax'd" data to the table body 
        $("table tbody").append(html); 
        // let the plugin know that we made a update 
        $("table").trigger("update"); 
        // set sorting column and direction, this will sort on the first and third column 
        var sorting = [[2,1],[0,0]]; 
        // sort on the first column 
        $("table").trigger("sorton",[sorting]); 
    }); 
    return false; 
}); 

标记看起来像这样

<div class="friend" id="friend6" style="padding 5px; height: 54px; margin-bottom: 10px;">
<div style="float: left; width: 54px;">
       <img style="border:2px solid #E1E1E1;" src="6.jpg"/>
</div>
<div id="name6" style="float: left; padding-top: 20px; padding-left: 10px; font-size: 14px; width: 200px">
    <a href="#" class="ajax-append" id="6">name 6</a>
</div>
</div>
<div class="friend" id="friend7" style="padding 5px; height: 54px; margin-bottom: 10px;">
<div style="float: left; width: 54px;">
    <img style="border:2px solid #E1E1E1;" src="7.jpg"/>
</div>
<div id="name7" style="float: left; padding-top: 20px; padding-left: 10px; font-size: 14px; width: 200px">
    <a href="#" class="ajax-append" id="7">name 7</a>
</div>

如果我使用特定的id,我可以在anchor标签中获取文本,但我正在尝试使用$(this)来实现此目的,并且警报消息始终未定义。

任何人都可以指出出了什么问题吗?或者想一个更好的方法来做到这一点?

感谢。

5 个答案:

答案 0 :(得分:4)

试试这个:

$(".ajax-append").click(function(event) { 
    var element=this;
     $.get("includes/fight.php?name=test", function(html) { 

     console.log($(element).text());
     console.log($(element));

        // append the "ajax'd" data to the table body 
        $("table tbody").append(html); 
        // let the plugin know that we made a update 
        $("table").trigger("update"); 
        // set sorting column and direction, this will sort on the first and third column 
        var sorting = [[2,1],[0,0]]; 
        // sort on the first column 
        $("table").trigger("sorton",[sorting]); 
    }); 
    return false; 
});

答案 1 :(得分:0)

这是因为你在ajax回调中使用了this,它不再引用被点击的元素。

答案 2 :(得分:0)

在代码的上下文中,$(this)是一个AJAX请求。

最简单的方法是在AJAX调用之前设置变量,并在$ get中使用它。

答案 3 :(得分:0)

$(".ajax-append").each(function(){
     $(this).click(function(event) { 
          $.get("includes/fight.php?name=test", function(html) { 

          console.log($(this).text());
          console.log($(this));

             // append the "ajax'd" data to the table body 
             $("table tbody").append(html); 
             // let the plugin know that we made a update 
             $("table").trigger("update"); 
             // set sorting column and direction, this will sort on the first and third column 
             var sorting = [[2,1],[0,0]]; 
             // sort on the first column 
             $("table").trigger("sorton",[sorting]); 
         }); 
         return false; 
     }
});

答案 4 :(得分:0)

JavaScript中的 关键字将根据我们使用的范围而有所不同。在这里你是ajax请求回电函数。

所以我相信 this.responseText 会有效。看看这个