Jquery将不同的id值传递给包含变量的泛型函数

时间:2012-09-25 21:29:46

标签: php jquery

这里的第一个计时器,首先尝试在php / jquery

此代码正在运行:

$('#update1').click(function(){
    var name= $('#bandname-1').val();
    var bandid = $('#bid-1').val();
    var mbid = $('#mbid-1').val();
    $('#msg').text('updating...');
    $.post('func/update_bandname.php',{
        name: name,
        bandid: bandid,
        mbid: mbid
    }, function(data){
        $('#msg1').text(data);
    });
});

这是我的php: -snip

echo "<td>";
echo "<input type=\"text\" name=\"bandname-".$i."\" id=\"bandname-".$i."\" value=\"".$name ."\"/>&nbsp;";
echo "<input id=\"update".$i."\" type=\"button\" name=\"update".$i."\" value=\"update\" class=\"dp\"/>";
echo "<span id=\"msg".$i."\"></span><input type=hidden id=\"bid-".$i."\" value=\"".$_REQUEST[bid] ."\" name=bid-".$i."\" />";
echo "<input type=hidden id=\"mbid-".$i."\" value=\"".$bandid."\" name=mbid-".$i."\" />";
echo "</td>";
echo "</tr>";
$i++;

DB将很多记录重写到此表中,我创建了5个函数update1,update2等

有没有办法修改我的jquery以将不同的id值传递给一个函数?而不是一遍又一遍地复制功能?

由于

3 个答案:

答案 0 :(得分:1)

您可以使用attribute starts with selector

$('input[id^=update]').click(function() {
   var id = this.id.match(/\d+/g).join('');
   var name= $('#bandname-'+id).val();
   var bandid = $('#bid-'+id).val();
   var mbid = $('#mbid-'+id).val();
   $('#msg').text('updating...');
   $.post('func/update_bandname.php', {
            name: name,
            bandid: bandid  ,
            mbid:mbid
   }, function(data) {
            $('#msg'+id).text(data);
   });
});

但最好使用类而不是ID。

$('.update').click(function() {
   var $this = $(this);
   var name = $this.siblings('.bandname').val();
   var bandid = $this.siblings('.bid').val();
   var mbid = $this.siblings('.mbid').val();
   $('#msg').text('updating...');
   $.post('func/update_bandname.php', {
            name: name,
            bandid: bandid  ,
            mbid:mbid
   }, function(data) {
            $this.siblings('.msg').text(data);
   });
});

答案 1 :(得分:1)

为每个元素分配一个公共类和data-属性:

PHP:

echo '<input class="updatebutton dp" data-idnum="'.$i.'" id="update'.$i.'" type="button" name="update'.$i.'" value="update">';

JS:

$('.updatebutton').click(function() {
   var id = $(this).data('idnum'),
       name= $('#bandname-'+id).val(),
       bandid = $('#bid-'+id).val(),
       mbid = $('#mbid-'+id).val();
   $('#msg').text('updating...');
   $.post('func/update_bandname.php', {
            name: name,
            bandid: bandid  ,
            mbid:mbid
   }, function(data) {
            $('#msg'+id).text(data);
   });
});

答案 2 :(得分:0)

JS:

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function() {
  $('form').submit(function(data) {
    $.post('func/update_bandname.php', $(this).serialize(), function(data) {
       $('#msg1').text(data);
    });
  });
});
</script>

PHP:

echo "<tr>";
echo "<td>";
echo "<form>";
echo "<input type=\"text\" name=\"bandname-".$i."\" id=\"bandname-".$i."\" value=\"".$name ."\"/>&nbsp;";
echo "<input id=\"update".$i."\" type=\"button\" name=\"update".$i."\" value=\"update\" class=\"dp\"/>";
echo "<span id=\"msg".$i."\"></span><input type=hidden id=\"bid-".$i."\" value=\"".$_REQUEST[bid] ."\" name=bid-".$i."\" />";
echo "<input type=hidden id=\"mbid-".$i."\" value=\"".$bandid."\" name=mbid-".$i."\" />";
echo "</form>";
echo "</td>";
echo "</tr>";
$i++;