Javascript Jquery-无法将$作为正确元素的目标(此)

Javascript Jquery-无法将$作为正确元素的目标(此),javascript,jquery,this-pointer,Javascript,Jquery,This Pointer,可能重复: 我在代码中找到正确的元素时遇到了问题。我的页面上有一个缩略图列表,当你点击一个我不喜欢的图标时,目标视频会换成另一个 这是HTML <li class="videoBox recommended"> <div class="spacer" style="display: block;"></div> <div class="features"> <div> <a clas

可能重复:

我在代码中找到正确的元素时遇到了问题。我的页面上有一个缩略图列表,当你点击一个我不喜欢的图标时,目标视频会换成另一个

这是HTML

<li class="videoBox recommended">
   <div class="spacer" style="display: block;"></div>
   <div class="features">
       <div>
          <a class="dislike_black" title="I dislike this" onclick="ThumbsDown(30835, 'relevance', '1');"></a>
       </div>
   </div>
   <a href="...">
   <h1>...</h1>
   <div class="information">...</div>
</li>
我做错了什么?即使$this.cssborder,1px纯红也不起作用。我试过背景色,也试过颜色我什么都看不到

$This是指调用函数的a标记,对吗?所以我在找他的父母叫videobox。。。帮忙

因此,我可以将目标设置为

您不应该使用onclick,您应该将它绑定到事件,特别是如果用户没有ajax,您可以很容易地使其降级

将您的标记更改为:

<a href="/change/videos/1/thumbsdown/"
    data-sort="sort"
    data-page="page"
    class="dislike_black"
    title="I dislike this"></a>
现在,它在没有javascript的情况下工作,并且您没有使用讨厌的onclick!未经测试/无保修。

您不应该使用onclick,您应该将其绑定到事件,特别是如果用户没有ajax,您可能很容易使其降级

将您的标记更改为:

<a href="/change/videos/1/thumbsdown/"
    data-sort="sort"
    data-page="page"
    class="dislike_black"
    title="I dislike this"></a>

现在,它在没有javascript的情况下工作,并且您没有使用讨厌的onclick!未经测试/无保修。

几乎。为了实现这一点,您需要将上下文传递给.ajax调用

上面的代码将导致所有ajax处理程序都将此指向document.body。因此,您需要将document.body替换为您要查找的元素。例如,如果你在某种点击处理程序中调用你的函数,你可以直接调用上下文:这就完成了


有关更多详细信息,请参阅上下文部分。

。为了实现这一点,您需要将上下文传递给.ajax调用

上面的代码将导致所有ajax处理程序都将此指向document.body。因此,您需要将document.body替换为您要查找的元素。例如,如果你在某种点击处理程序中调用你的函数,你可以直接调用上下文:这就完成了


有关更多详细信息,请参阅上下文部分。

我相信您需要在原始代码中更改的只是在success函数之外获得对该函数的引用,如下所示:

function ThumbsDown(id,sort,page) {
    var self = this
    $.ajax({
        url: "/change/videos/"+id+"/thumbsdown/",
        type: "POST",
        data: {
            "sort": sort?sort:"",
            "page": page?page:""
        },
        success: function(data) {
            //$("#content .videoList ul li.videoBox").html(data); // THIS IS WORKING, but replaces ALL the divs
            $(self).parent("li.videoBox").html(data); // Cant get this to work!
        }
    });

我相信您需要在原始代码中更改的只是在success函数之外获得对它的引用,如下所示:

function ThumbsDown(id,sort,page) {
    var self = this
    $.ajax({
        url: "/change/videos/"+id+"/thumbsdown/",
        type: "POST",
        data: {
            "sort": sort?sort:"",
            "page": page?page:""
        },
        success: function(data) {
            //$("#content .videoList ul li.videoBox").html(data); // THIS IS WORKING, but replaces ALL the divs
            $(self).parent("li.videoBox").html(data); // Cant get this to work!
        }
    });

问题在于这一点。查看链接副本。Dunhamzzz,它不工作!:@雷贝卡·布莱恩现在明白了。问题在于这一点。查看链接副本。Dunhamzzz,它不工作!:@雷贝卡·布莱恩:现在就看。
function ThumbsDown(id,sort,page) {
    var self = this
    $.ajax({
        url: "/change/videos/"+id+"/thumbsdown/",
        type: "POST",
        data: {
            "sort": sort?sort:"",
            "page": page?page:""
        },
        success: function(data) {
            //$("#content .videoList ul li.videoBox").html(data); // THIS IS WORKING, but replaces ALL the divs
            $(self).parent("li.videoBox").html(data); // Cant get this to work!
        }
    });