2011-03-04 55 views
1

我有以下脚本:这个通过函数?

$('#element_1').live('click', function() { 
    function_1(this) 
}); 

function function_1(that) { 
    that = that.attr("id").split('_'); 

    alert(that[0]); 
    alert(that[1]); 
} 

我试图分裂的“本”的id属性,但我得到一个错误:

对象不支持此属性或方法。

但是,当我在click事件中直接做同样的事情时,例如

$('#element_1').live('click', function() { 
    var that = $(this).attr("id").split('_'); 

    alert(that[0]); 
    alert(that[1]); 
}); 

如何获得顶级版本的脚本工作?

回答

3

this使用jQuery:

function_1($(this)); 

(请注意,正确的在第二个版本做到这一点,这就是它工作的原因)。


什么更好的是访问id jQuery的:

that = that.id.split('_'); 
0
$('#element_1').live('click', function() { 
    function_1(this) 
}); 

    function function_1(that) { 
    that = $(that).attr("id").split('_'); 

    alert(that[0]); 
    alert(that[1]); 
} 

只需添加$为that,还是先改线function_1(this)function_1($(this))

0

你忘了包this jQuery中的第一个例子。

重写

$('#element_1').live('click', function() { 
    function_1(this) 
}); 

$('#element_1').live('click', function() { 
    function_1($(this)); 
}); 

,它应该工作。

一个普通的HTML元素对象没有attr方法(它特定于jQuery);因此错误。

0

这样的调用function_1 function_1($(this));