Jquery / Ajax используется на странице PHP в цикле for - PullRequest
1 голос
/ 03 августа 2011

Недавно я узнал, что при использовании onclick для кнопки имя поля и идентификатор кнопки должны быть уникальными.Хотя это не проблема, в зависимости от того, сколько строк выводит мой скрипт, это может быть много потерь.

Например, у меня есть цикл while, он делает это для каждого человека на моем сервере (minecraft), поэтому это может быть 10, это может быть 50.

это код для создания объектов js

  $kickbtn .= "    $('#kick_btn$k').click(function(event) { 
    var player_name$k = jQuery('input[name=\"player$k\"]').val()
    jQuery.get('testing.php?action=kick', { player_input: player_name$k} );
    alert('Successfully kicked');
  });\n\n";

это данные формы

    <form name=\"$pdata[name]\" action=\"\">
      <input type=\"hidden\" name=\"player$k\" value=\"$pdata[name]\">
      <input type=\"submit\" id=\"kick_btn$k\" value=\"Kick Player\">
    </form>
  $k++;

Есть ли более простой способ сделать это без создания всего этого лишнего кода?

Вывод хороший в html, и он работает, просто надеясь, что есть что-то более динамичное, что я могу сделать, и не так грязнов коде.Ниже идет от разбора кода и работает и выглядит хорошо.

$('#kick_btn14').click(function(event) { 

    var player_name14 = jQuery('input[name="player14"]').val()

    jQuery.get('testing.php?action=kick', { player_input: player_name14} );

    alert('Successfully kicked');

  });

1 Ответ

3 голосов
/ 03 августа 2011

Требуется только один делегированный обработчик событий, что означает присоединение его к родительскому элементу / элементу контейнера, если только вы не хотите, чтобы в вашем документе было более 50 обработчиков щелчков, которые излишне замедляют работу:

// bind to all elements starting with 'kick_btn' within #container
// (could even be 'body')
$("#container").delegate('[id^="kick_btn"]', "click", function(event) {

    // get the current player number from the id of the clicked button
    var num = this.id.replace("kick_btn", "");
    var player_name = jQuery('input[name="player' + num + '"]').val();
    jQuery.get('testing.php?action=kick', {
        player_input: player_name + num
    });
    alert('Successfully kicked');
});

Справка:

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