在jquery插件中的这个回馈undefined

时间:2010-10-15 23:29:50

标签: javascript jquery

有人可以解释为什么this.rel正在回馈undefined以及正则表达式应该做什么。 如果this.rel未定义,则正则表达式也不会正常工作并导致某种错误,因为下面的警报不会触发?

$.fn.facebox= function(settings) {
    init(settings)

    function clickHandler() {
      $.facebox.loading(true)
alert($(this).attr('rel'));
//alert(String(this.rel));
      // support for rel="facebox.inline_popup" syntax, to add a class
      // also supports deprecated "facebox[.inline_popup]" syntax
      var klass = this.rel.match(/facebox\[?\.(\w+)\]?/)
   alert(klass);
alert('ppp');
     // if (klass) klass = klass[1]

      //fillfaceboxFromHref(this.href, klass)
      return false
    }

    return this.click(clickHandler)
  }
谢谢,理查德

1 个答案:

答案 0 :(得分:1)

jQuery-Object有很多属性,其中一个是带有找到元素的数组。

您必须遍历此数组并将事件绑定到这些单个元素:

  jQuery.fn.extend({
facebox: function() 
{
      //here this is a jQuery-object
  function clickHandler() 
      {
        //here this is a DOMElement
        alert($(this).attr('rel'));
        return false
      }

  return this.each(function() {
              var self = jQuery(this);
              self.click(clickHandler)
           });

}});