如何在$ .get()函数内部编辑由锚点触发的事件?

时间:2014-08-29 16:47:58

标签: javascript jquery

我正在尝试创建一个脚本,当你点击一个锚点时,一个$ .get函数会得到锚点的href,然后href将被删除,但我无法从de get里面编辑关于锚点的任何内容元件。例如:

// make anchor disappear for example (doesn't work)
$('.belovedanchor').click(function(e) {
  $.get($(this).attr('href')).done(function() {
    $(this).hide();
  });
});

// make an anchor disappear using a function (doesn't work too)
$('.belovedanchor').click(function(e) {
  function do() { $(this).hide(); };
  $.get($(this).attr('href')).done(function() {
    do();
  });
});

我不明白为什么$(this)更改为使用$ .get函数而不是.click事件。

你们会怎么做?

2 个答案:

答案 0 :(得分:1)

你有几个问题。 修改:只有一个问题 - 我现在从您的评论中看到belovedanchor不是代码中的实际选择器。

首先,click事件处理程序的jQuery选择器很可能不正确。将$('belovedanchor')更改为$('.belovedanchor')$('#belovedanchor'),具体取决于锚点是否可分别通过类别或元素ID识别。

其次,this回调函数中的do未引用锚点。在JavaScript中,范围是在函数级别设置的,因此无论何时声明新函数,this都将引用该新范围。

请改为:

$('belovedanchor').click(function(e) {
  var anchor = $(this);
  function do() { anchor.hide(); };
  $.get($(this).attr('href')).done(function() {
    do();
  });
});

简化为:

$('belovedanchor').click(function(e) {
  var anchor = $(this);
  $.get(anchor.attr('href')).done(function() {
    anchor.hide();
  });
});

答案 1 :(得分:0)

这可能会正常工作

$('.belovedanchor').click(function() {
  var selectedancor = $(this);
  var myurl = $(this).attr('href');
  $.get(myurl, function() {
     selectedanchor.hide();
  });
});