这通过功能吗?

时间:2011-03-04 12:09:39

标签: jquery

我有以下脚本:

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

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

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

我正在尝试拆分“this”的id属性,但是我收到错误:

Object不支持此属性或方法。

然而,当我在点击事件中直接做同样的事情,例如

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

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

如何让脚本的顶级版本正常运行?

4 个答案:

答案 0 :(得分:3)

首先用jQuery包装this

function_1($(this));

(请注意,您在第二个版本中正确执行此操作,这就是它工作的原因)。


更好的方法是在没有 jQuery的情况下访问id

that = that.id.split('_');

答案 1 :(得分: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))

答案 2 :(得分:0)

您忘记在第一个示例中将this包装在jQuery中。

重写

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

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

它应该有用。

常规HTML元素对象没有attr方法(它特定于jQuery);因此错误。

答案 3 :(得分:0)

像这样调用function_1 function_1($(本));