2012-01-11 3 views
5

a.nodeName неопределенa.nodeName является Неизвестная ошибка Jquery

Я смотрел это вверх, но объяснения не кажутся совсем понятно мне.

function deleteThisRow() { 
    $(this).closest('tr').fadeOut(400, function(){ 
     $(this).remove(); 
    }); 
} 
<tr> 
    <td>blah blah blah</td> 
    <td> 
     <img src="/whatever" onClick="deleteThisRow()"> 
    </td> 
</tr> 
+1

Внутри 'deleteThisRow',' this' будет ссылаться на 'window', а не изображение. Почему вы не связываете обработчик событий с jQuery? –

ответ

14

this ключевое слово в функции не относится к элементу, который был щелкнули. По умолчанию он будет ссылаться на самый высокий элемент в DOM, который будет window.

Попробуйте это:

<tr> 
    <td>blah blah blah</td> 
    <td><img src="/whatever"></td> 
</tr> 
$("tr td img").click(deleteThisRow); 

function deleteThisRow() { 
    $(this).closest('tr').fadeOut(400, function() { 
     $(this).remove(); 
    }); 
} 
+0

Действительно, похоже, эта ошибка означает, что вы неправильно использовали $ (this). В этом случае я пытался вызвать функцию, которую я написал, предполагая, что она будет вызываться из определенного события вне этого события. – neminem

+1

Весело, пару лет спустя, забыв об этом, я сделал то же самое снова, нашел этот очень полезный комментарий, пошел, чтобы его продвигать, и не мог, потому что получается, что я был тем, кто его написал. Спасибо, сам! : D – neminem

1

Try:

$(document).ready(function() { 
    $("img").click(function() { 
     $(this).closest('tr').fadeOut(400, function(){ 
      $(this).remove(); 
     }); 
    }); 
}); 
Смежные вопросы