Получение jQuery для возврата объекта ajax - PullRequest
0 голосов
/ 09 марта 2010

Заголовок вопроса немного странный, потому что я не совсем уверен, как сформулировать проблему. Проблема в том, что у меня много ссылок, с которыми я хочу связать событие click с помощью вызова ajax, и я просто пытаюсь реорганизовать некоторый повторяющийся код в одну область.

Ссылки, которые я пытаюсь связать с вызовом ajax, имеют только одну вещь, которая отличает их, и это идентификатор от ранее объявленного объекта. Итак, у меня есть много кода, который выглядит следующим образом:

$("a.link").bind('click', function() {
           id = obj.id; 
           $.ajax({ 
                   url: "/set/" + id, 
                   dataType: 'json', 
                   type: "POST" 
           }) 
    });

Я пытался преобразовать его в нечто вроде этого:

$ ("a.link"). Bind ('click', ajax_link (obj.id));

 function ajax_link(id) {
      $.ajax({ 
             url: "/set/" + id, 
             dataType: 'json', 
             type: "POST" 
      }) 
 });

Однако, как вы можете себе представить, это просто делает вызов ajax, когда элемент связан с событием click.

Есть ли простой способ реорганизовать этот код, чтобы я мог извлечь общий код ajax в его собственную функцию и, надеюсь, уменьшить количество строк jQuery в моем текущем скрипте?

Ответы [ 2 ]

3 голосов
/ 09 марта 2010

Это должно делать то, что вы хотите:

$("a.link").click(make_ajax);

function make_ajax() {
  $.ajax({ 
    url: "/set/" + id, 
    dataType: 'json', 
    type: "POST" 
  });
}

this в этом случае ссылается на источник события, являющийся ссылкой, по которой щелкнули.

Также возможно определить замыкание:

$("a.link").click(function() {
  make_ajax(this.id)();
});

function make_ajax(id) {
  return function() {
    $.ajax({ 
      url: "/set/" + this.id, 
      dataType: 'json', 
      type: "POST" 
    });
  };
}

но я не думаю, что это действительно помогает в вашем примере.

0 голосов
/ 09 марта 2010

Вы всегда можете поместить вызов ajax_link в функцию привязанного клика,

$("a.link").bind('click', function() {
  ajax_link(obj.id);
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...