jQuery: использование $ (this) внутри функций? - PullRequest
3 голосов
/ 04 марта 2011

Есть ли способ использовать $(this) внутри функций jQuery?

HTML

<ul>
  <li class="delete"><a onclick="deletePerson(12);" href="">Delete</a></li>
</ul>

JQuery

function deletePerson(id) {
  $(this).parent().remove(); // doesn't work
  // [...]
  return false;
}

Ответы [ 3 ]

7 голосов
/ 04 марта 2011

Передать ссылку в качестве параметра:

<ul>
  <li class="delete"><a onclick="deletePerson(this, 12);" href="">Delete</a></li>
</ul>

function deletePerson(link, id) {
  $(link).parent().remove(); 
  // [...]
  return false;
}
3 голосов
/ 04 марта 2011

Вы можете использовать .call() для установки значения this, как вы просили.

<a onclick="deletePerson.call( this, 12 );" href="">Delete</a>

Теперь в функции deletePerson элементом будет this.

function deletePerson(id) {
  $(this).parent().remove(); // will work
  // [...]
  return false;
}
0 голосов
/ 04 марта 2011

Вам не нужно иметь JS на самой ссылке, поскольку вы используете JS.

HTML

<ul>
    <li class="delete"><a onclick="deletePerson(12);" href="">Delete</a></li>
</ul>

JQuery

$('.delete').find('a').bind('click', function() {

    $(this).parent().remove();
    return false;

});
...