jQuery - 未保存生成元素的新属性

时间:2015-04-02 16:22:13

标签: javascript jquery html web attr

当我在元素上创建新属性时,它是动态生成的,它不会被保存:

$("#div-main").on("mouseover", ".generated", function(e)
{
    console.log("hover");
    console.log($(this).attr("title")) // always undefined

    if (typeof $(this).attr("title") === typeof undefined)
    {
      $.get("<URL with PHP>", function(data)
        {
          if (data != "")
          {
            $(this).attr("title", data);
            console.log($(this).attr("title")); // data shows
          }
          else
          {
            $(this).attr("title", "no data");
            console.log($(this).attr("title")); // "no data" shows
          }
        });
    }
    else
    {
      console.log("'title' attribute already set");
    }
});
未生成

#div-main。具有类.generated的元素是动态生成的<a>元素。

1 个答案:

答案 0 :(得分:2)

那是因为this在AJAX回调中是不同的

$("#div-main").on("mouseover", ".generated", function(e)
{
  console.log("hover");
  console.log($(this).attr("title")) // always undefined

  if (typeof $(this).attr("title") === typeof undefined)
  {
    var that = this; //CONTEXT
    $.get("<URL with PHP>", function(data)
    {
      if (data != "")
      {
        $(that).attr("title", data);
        console.log($(that).attr("title")); // data shows
      }
      else {
          $(that).attr("title", "no data");
          console.log($(that).attr("title")); // "no data" shows
      }
        });
    } else {
        console.log("'title' attribute already set");
    }
});