2013-09-20 3 views
-1

это мои JS файлы моего проекта:Object [объект Object] не имеет метода 'живой'

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

в: 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> 

и ошибка исчезла. но когда я нажал div, у которого есть id = "object_option_conversion_points_1", ничего не происходит.

поэтому я попытался:

$('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/ 

любая помощь приветствуется!

+3

live устарели и удалены из jQuery – adeneo

+0

Вы добавляете 'object_option_conversion_points_' динамически, если так использовать делегирование событий ... – PSL

+0

jQuery' live() 'устарел. http://api.jquery.com/live/ – Julio

ответ

2

live() устарел, и в вашей версии jQuery, вероятно, уже удален.

Для этой цели вы можете использовать delegates.

Но селектор просто болит мои глаза. Почему вы не использовали #?

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

спасибо, но он не работает:/ –

+0

@AlonShmiel Является ли содержимое внутри 'li' динамически сгенерировано? – War10ck

1

Использование on() правильный способ идти о вещах:

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

Я не слишком уверен в синтаксисе, чтобы выбрать DIV, но второй параметр будет слушать любого div[id^="obj ... "] что создаются.

+0

Вы уверены, что можете делегировать 'li'? 'li' кажется вполне восприимчивым к динамическому добавлению ко мне. –

+0

ну, это всего лишь концептуальный ответ, очевидно, что привязка чего-либо на всех 'li' на странице глупо. – Phil

+0

спасибо, но это не сработало:/ –

Смежные вопросы