2015-04-02 63 views
0

当我创建元素,这是动态生成新的属性,它不保存:jQuery的 - 生成的元素的新属性不会保存

$("#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的元素是动态生成的元素。

回答

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"); 
    } 
});