javascript中$(this)的含义是什么?

时间:2010-12-29 06:26:53

标签: javascript jquery calendar

我有以下代码用于日历弹出窗口正常工作

<input type="text" value="12/01/2010"  readonly="readonly" name="start_date_1" id="start_date_1" disabled="disabled"/>
  <img src="/images/calendar_date_select/calendar.gif" onclick="new CalendarDateSelect( $(this).previous(), {popup:'force', year_range:10} );" class="calender_image" alt="Calendar"/>

但我想要的是我的日历弹出窗口最初会保持禁用状态,点击“编辑”按钮后它才会打开。我使用disabled="disabled"但由于popup:'force'

而无效

所以我写下面的代码

<script type="text/javascript" 
   function disable_pop_up(){
     if (edit==true)
       new CalendarDateSelect( $(this).previous(), {popup:'force', year_range:10} );
     else
       return false;
   }
</script>


<input type="text" value="12/01/2010"  readonly="readonly" name="start_date_1" id="start_date_1" disabled="disabled"/>
  <img src="/images/calendar_date_select/calendar.gif" onclick="disable_pop_up()" class="calender_image" alt="Calendar"/>

当然JavaScript失败了,所以我的问题是我应该在disable_pop_up()写一下来完成它?

* 已编辑*

通过发送$(this)作为参数来解决我的问题

  function disable_pop_up(cal, id){
     disable = document.getElementById(id).disabled
     if (disable==true)
       return false;
     else
       new CalendarDateSelect( cal.previous(), {popup:'force', year_range:10} );
  } 

  onclick="disable_pop_up($(this), 'start_date_1'"

但我的问题仍然存在,为什么我不能在我的JavaScript函数中编写类似$("#start_date_1")的内容?

3 个答案:

答案 0 :(得分:0)

$(this)引用调用函数的HTML元素。

答案 1 :(得分:0)

$jQuery函数的简写。这仅在您的页面中加载了jquery库时才有效。

答案 2 :(得分:0)

在你的第一个例子中,$(this).previous()将引用输入,所以如果你想改变你的功能,试试

<script type="text/javascript" >
   function disable_pop_up(){
     if (edit==true)
       new CalendarDateSelect( $("#start_date_1"), {popup:'force', year_range:10} );
     else
       return false;
   }
</script>

P.S。 $ function是主要jQuery函数的简写