$(this)在函数内不起作用?

时间:2013-09-10 17:44:25

标签: jquery dom

我有一个单击按钮时调用的函数。我想遍历dom以进入隐藏的输入字段,该字段包含我需要访问的一些存储数据
按钮

<button class="btn btn-small btn-danger delete-video-btn" onclick="delete_video()"><span class="icon-remove"><i> </i></span>Delete Video</button>   


的JavaScript

function delete_video() {
    alert('delete video is running');
    var thisUniqueID = jQuery(this).parent().parent().parent().find('input[name="uniqueVideoID"]').val();
    alert(thisUniqueID);
    //alert("Are you sure you want to delete this video?");
}


但是现在它在我的jquery中使用(this)并不像预期的那样工作。如果我这样设置它会起作用,但这对我设置的代码不起作用。

这有效,但不是我需要的

jQuery('.delete-vide-btn').click(function() {
  var thisUniqueID = jQuery(this).parent().parent().parent().find('input[name="uniqueVideoID"]').val();
  alert(thisUniqueID);
})      

如何在函数运行时找到正确的元素并存储数据,而不是使用.click函数?

3 个答案:

答案 0 :(得分:4)

你可以这样做:

onclick="delete_video.call(this)"

并且不会对您的代码进行任何更改。

<强> Here an example

答案 1 :(得分:2)

你需要传递&#34;这个&#34;的背景​​。功能:

onclick="delete_video(this)"

然后...

function delete_video(something) {
    $this = something;
    ...
}

答案 2 :(得分:0)

Try this function  

  function delete_video() {
        alert('delete video is running');
        var thisUniqueID = jQuery('.delete-vide-btn').parent().parent().parent().find('input[name="uniqueVideoID"]').val();
        alert(thisUniqueID);
        //alert("Are you sure you want to delete this video?");
    }
相关问题