2013-06-26 2 views
0

У меня есть группа кнопок на моей странице, некоторые из них я хочу сделать определенным вызовом Ajax, а другие кнопки - другим вызовом Ajax, следует ли использовать тип данных и поставить на него оператор if.JQuery условная кнопка click

$("button").click(function() { 
    //SOME BUTTONS AJAX THIS CALL 
    //This Ajax toggles device on and off 
    var $x10Device = $(this).parent().attr("class"); 
    $.ajax({ 
     type: 'GET', 
     url: "http://192.168.0.34:81/tenHsServer/tenHsServer.aspx", 
     data: { 
      t: "ab", 
      f: "ToggleDevice", 
      d: $x10Device 
     }, 
     error: function (request, status, error) { 
      alert(request.responseText); 
     } 
    }); 
    //OTHER BUTTONS THIS AJAX CALL 
    //This Ajax checks the current on/off status of the passed X10 code 
    $.ajax({ 
     url: "urlencode.php", 
     data: data, 
     type: "POST", 
     success: function (data) { 
      myd = $('<span />').html(data).find("#Result").text(); 
      console.log(myd); 
      if (myd == 'C5:2;') { 
       $('img').attr('src', 'lightbulbon.png') 
      } else { 
       $('img').attr('src', 'lightbulboff.png') 
      }; 
     }, 
     error: function (request, status, error) { 
      alert(request.responseText); 
     } 
    }); 

}); 

ответ

4

Добавить семантические классы CSS для вашей кнопки разметки. Разместите различные запросы AJAX в соответствующем обработчике событий кликов.

$("button.toggleStatus").click(function() { 
    // ajax request for toggling 
}); 

$("button.checkStatus").click(function() { 
    // ajax request for updating status 
}); 
-1

Используйте идентификатор кнопки и поместить каждый АЯКС запрос в соответствующих событиях щелчка ...

$("button#button1").click(function() { 
// ajax request for button 1 
}); 

$("button#button2").click(function() { 
// ajax request for button 2 
}); 
+1

Он говорит, что имеет несколько кнопок, которые он хочет вызвать каждый вызов ajax; используйте классы вместо ids. –

+0

Если я использовал класс и использовал атрибут пользовательских данных, чтобы указать разные функции, я хотел избежать того, чтобы в атрибуте класса было много разных записей. Правильно ли это делать? –

+0

Использование селекторов идентификаторов намного эффективнее, чем использование селектора классов, а затем имеет оператор if внутри указанного селектора. Это лучшее решение. –

0

Попробуйте добавить класс к каждой кнопке (например, упомянутый Томас). Вы также можете прокручивать свои кнопки, проверяя их имена классов, и после нахождения совпадающего вызова функцию ajax. Может быть, что-то вроде:

var btn = $("button"); 
$.each(btn, function (index) { 
    var ctx = $(this); 
    if (ctx.hasClass("firstButton")) { 
     // call appropriate ajax function here 
    } 
    if (ctx.hasClass("secondButton")) { 
     // call appropriate ajax function here 
    } 
});