Наблюдатели-прототипы, прикрепленные к классу, стреляют несколько раз.Jquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Anonymous
 Наблюдатели-прототипы, прикрепленные к классу, стреляют несколько раз.

Сообщение Anonymous »

Мы просто создавали очередь в стиле Netflix с добавлением, изменением порядка и удалением с помощью AJAX. Элементы находились в UL и имели ссылку на удаление внутри каждого LI с уникальными идентификаторами, которые можно было использовать для удаления. Пожалуйста, не зацикливайтесь на том, почему мы использовали текстовые файлы для сохранения данных и т. д. — профессор сделал этот непрактичный выбор в качестве требования, а также некоторых других.
JS:

Код: Выделить всё

function softRefresh() {
$$('.delete').invoke('observe','click',function() { taskDelete(this.id); });
Sortable.create("taskList", { onUpdate: function(list){ saveOrder(list); } });
}

function taskDelete(a) {
var tempArr = a.split('-');
var keyToDelete = tempArr[1];
var output;
var ajaxRequest = new Ajax.Request("todolist.php",
{
method: "post",
parameters: {
action: 'delete',
id: keyToDelete
},
onSuccess: function(response) {
$('taskList').update(response.responseText);
softRefresh();
}
});
}
PHP для действия «удалить»:

Код: Выделить всё

$jsonOutput = file_get_contents($myFile);
$fetchedArr = json_decode($jsonOutput);
$newArr = array();
foreach($fetchedArr as $key => $task) {
if(($key != $_POST['id'])) {
array_push($newArr, $task);
}
}
$jsonOutput = json_encode($newArr);
file_put_contents($myFile, $jsonOutput);
$output = '';
foreach($newArr as $key => $task) {
$output .= '[*]';
$output .= $task;
$output .= '[url=#]X[/url]';
$output .= '';
}
echo $output;
Проблема заключалась в том, что если я удалю, скажем, второй элемент, все последующие элементы также будут удалены. С помощью консоли Firebug я узнал, что это происходит потому, что когда вы нажимаете любую ссылку этого класса («удалить»), все следующие прослушиватели срабатывают и продолжают удалять второй элемент из нового списка. Можете ли вы сказать мне, почему и как я могу настроить его так, чтобы он запускался только по ссылке, по которой вы нажимаете? Это сводило меня с ума весь день. Я привык к использованию .click() в jQuery... сейчас очень ненавижу Prototype.

Подробнее здесь: https://stackoverflow.com/questions/659 ... iple-times
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Jquery»