JQuery вызов функции JavaScript внутри LIVE Никогда не происходит - PullRequest
1 голос
/ 09 октября 2009

Я делаю AJAX-вызов, который возвращает HTML и jQuery:

<div id='selected'>Here is my Selection Text 
<a id='trashSelected' href=\"javascript:void(0);\">Remove</a>
</div>
<script>
        $('#trashSelected').live('click',function delete() 
        {

          // remove the container
          $('#selected').remove();

          substractSelectionCount();
          return false;
        });
</script>

JQuery удаляет контейнер, который был добавлен, если пользователь нажимает на ссылку «Удалить». Он выполняет работу по удалению контейнера, но вызывает метод substractSelectionCount (); никогда не происходит я должен делать вызов этой функции по-другому?
Это функция, которая уже была в документе. Протестировано в FF, IE 8 и Safari

Ответы [ 4 ]

0 голосов
/ 09 октября 2009

Является ли ваша currentSelectionCount глобальной переменной? Может быть, функция вызывается и из-за этого она не работает?

А вы пытались добавить предупреждение в функцию, чтобы убедиться, что она не вызывается?

function substractSelectionCount(){
 alert("I'm working!");
 currentSelectionCount--;
}

Я собрал тестовый файл в этом pastebin , и он, похоже, отлично работал с идентификаторами ... но так как я добавил три элемента div для проверки, мне пришлось заменить идентификаторы на классы. Итак, я не уверен, где у вашего кода проблемы - может быть, ваша substractSelectionCount функция находится за пределами функции document.ready?

0 голосов
/ 09 октября 2009

Кажется, что в вашей функции обратного вызова есть синтаксическая ошибка, удалите слово delete

    $('#trash{$roleId}').live('click',function(e) {
      e.preventDefault();
      alert('trash clicked');
      // ...
      return false;
    });
0 голосов
/ 09 октября 2009

Обойти эту проблему можно следующим образом: вместо возврата скрипта из вызова ajax я использую классы в своем основном файле. Все ответы возвращаются в этой строке

<div id='selected'>Here is my Selection Text 
   <a class='trashSelected' href=\"javascript:void(0);\">Remove</a>
</div>

и у меня в файле есть такая функция


$('.trashSelected').live('click',function(){</p>

<code>$(this).parent().remove();

subtractSelectionCount();
return false;

});

0 голосов
/ 09 октября 2009

Я мог бы что-то упустить, но вы пробовали это так?

$('#trash{$roleId}').live('click',function delete() 
{

  // remove the container
  substractSelectionCount();
  $('#selected').remove();
  return false;

});
...