对象[object Object]没有方法'live'

时间:2013-09-20 19:06:53

标签: jquery click

这些是我项目的js文件:

tablequerywrapper.js
gauge.min.js
Functions.js
colortip-1.0-jquery.js 
ObjectivesFunctions.js
jquery.bxslider.js

in:Functions.js,我有:

$('li div[id^="objective_option_conversion_points_"]').click(function () {
  alert('3');
}

$('#sortedPixels tbody').sortable({
    items: '> tr',
    forcePlaceholderSize: true,
    placeholder: 'must-have-class',
    start: function (event, ui) {
        // Build a placeholder cell that spans all the cells in the row
        var cellCount = 0;
        $('td, th', ui.helper).each(function () {
            // For each TD or TH try and get it's colspan attribute, and add that or 1 to the total
            var colspan = 1;
            var colspanAttr = $(this).attr('colspan');
            if (colspanAttr > 1) {
                colspan = colspanAttr;
            }
            cellCount += colspan;
        });

        // Add the placeholder UI - note that this is the item's content, so TD rather thanTR
        ui.placeholder.html('<td colspan="' + cellCount + '">&nbsp;</td>');
    }
}).disableSelection();

我跑了然后得到了:

Uncaught TypeError: Object #<Object> has no method 'sortable'

我读到这个错误是因为我需要JQUERY UI,所以我补充说:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

并且错误消失了。但当我按下一个id =“objective_option_conversion_points_1”的div时,什么也没发生。

所以我试过了:

$('li div[id^="objective_option_conversion_points_"]').on('click', function () {
    alert('3');
}

但没有发生任何事情。

所以我试过了:

$('li div[id^="objective_option_conversion_points_"]').live('click', function () {
    alert('3');
}

然后又出现了另一个错误:

Uncaught TypeError: Object [object Object] has no method 'live'

我该如何解决?

P.S。

在我的jsfiddle中,它有效:

http://jsfiddle.net/alonshmiel/adpFV/7/

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

live()已弃用,您的jQuery版本可能已被删除。

您可以将delegates用于此目的。

但选择器只是伤害了我的眼睛。你为什么不在那里使用#

$('#objective_option_conversion_points_').on('click', function(){
    alert('3');
});

答案 1 :(得分:1)

使用on()是正确的方法:

$( 'li' ).on( 'click', 'div[id^="objective ... "]', function () {
    // do something.
}

我不太确定选择div的语法,但第二个参数会 将侦听所创建的任何div[id^="obj ... "]