在jQuery中使用$(this),如何解决?

时间:2014-02-28 15:45:54

标签: javascript jquery html jquery-plugins this

以下是我的代码......

  $('.dp_top_panel_alphabet_ul li').click(function(){

  console.log($(this).attr('title'));

  });

此代码工作正常,我的第二个代码低于......

 $("[tagname='a']").click(function(){
    $('.dp_right_panel').hide();
    $('.dp_right_show').show();
    var a;
    $('.font_image').each(function(){
    if($(this).attr('title').substr(0, 1)=='A'){

        a += $(this)[0].outerHTML;
    }

    });
      $('.fonts_div_show').html(a);

  });

此代码也可以正常工作,但现在问题是我必须集成两段代码并且存在问题:

  $('.dp_top_panel_alphabet_ul li').click(function(){

  var letter = $(this).attr('title');
  var tagme="[tagname="+letter+"]";

     $(tagme).click(function(){
    console.log("[tagname="+letter+"]");
    $('.dp_right_panel').hide();
    $('.dp_right_show').show();
    var a;
    $('.font_image').each(function(){
    if($(this).attr('title').substr(0, 1)==letter){

        a += $(this)[0].outerHTML;
    }

    });
      $('.fonts_div_show').html(a);

  });

  });

此代码无效...因为$this关键字。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果您想要点击的元素,您应该使用事件参数中的event.target属性。

答案 1 :(得分:1)

var $this = this;//Cache your selector here at the top
 ----------------------------------------------------
if ($this.title.substr(0, 1) == letter) {
    a += $this.outerHTML; //now use $this
}