0

我有按钮和 div,在每个部分中我都有相同的 ID 我想获取按钮的 ID 并将其用于刷新 div html。我应该如何编写 * 部分?

   $(function() {
         $(".button").click(function(){ 
         var id=$(this).attr('id');
         var dataString = 'id='+ id ;
        $.ajax({
           type: "POST",
           url: "download_number.php",
           data: dataString,
           cache: false,
           success: function(html)
           {
          *********I HAVE PROBLEM HERE**************
            $('how to get the id of the div from var id of button above?').html(html);
          } 
           });

         });
              });

分区:

  Downloaded:<div id="<?php echo $id; ?>" ><?php echo $downloadcount;?></div>

按钮:

 <input type = "button" value="Download" class="button" id="<?php echo $id; ?>" name="dl">

如果我上课它会更新整个 div 我只想更新按钮的 div

4

9 回答 9

1

您不能id在按钮和 div 上使用相同的值,id值在文档中必须是唯一的。

我可能会做的是将 divid作为data-divid属性放在按钮上(所有带有前缀data-的属性对 HTML5 的所有元素都有效,并且在早期版本的 HTML 中无害),如下所示:

<input type="button" value="Download" class="button" data-divid="<?php echo $id; ?>" name="dl">

然后改变

var id=$(this).attr('id');

var id=$(this).attr('data-divid');

...然后id在您的回调中使用该 var success(因为回调是在id定义的上下文中创建的闭包,因此回调可以访问id)。

这是一个简单的例子:Live copy | 来源

HTML:

<div id="div1">This is div1</div>
<div id="div2">This is div2</div>
<div>
  <input type="button" data-divid="div1" value="Update div1">
  <input type="button" data-divid="div2" value="Update div2">
</div>

JavaScript:

jQuery(function($) {
  $("input[type=button]").click(function() {
    var id = $(this).attr("data-divid");

    // I'll use setTimeout to emulate doing an ajax call
    setTimeout(function() {
      // This is your 'success' function
      $("#" + id).html("Updated at " + new Date());
    }, 10);

    return false;
  });
});
于 2012-10-15T13:16:17.470 回答
0

尝试类似:

$('.button').attr('id');

获取按钮的 id,然后更改它:

$('.button').attr('id',''); //delete previous id if existing
$('.button').attr('id','yourNewId'); //set new id

然后使用新的ID:

$("#yourNewId").doSomething();
于 2012-10-15T13:11:47.087 回答
0

将您的 html 更改为:

Downloaded:<div id="<?php echo $id; ?>" class="downloaded" ><?php echo $downloadcount;?></div>

然后做类似的事情:

var element_id = $(".downloaded").prop("id");
if(element_id = this.id){
   $("#"+element_id).html(/* ... */);
}
于 2012-10-15T13:12:20.603 回答
0
$(function() {
    $(".button").click(function(){ 
        var id=$(this).attr('id');
        var dataString = 'id='+ id ;
        $.ajax({
        type: "POST",
        url: "download_number.php",
        data: dataString,
        cache: false,
        success: function(html)
        {
            $('.count-' + id).html(html); // for class
        } 
        });

    });
});

<div class="count-<?php echo $id; ?>" ><?php echo $downloadcount;?></div>

于 2012-10-15T13:14:02.510 回答
0

使用 id 但为其添加前缀,然后建立名称...

<div id="div_<?php echo $id; ?>" ><?php echo $downloadcount;?></div>

按钮:

<input type = "button" value="Download" class="button" id="<?php echo $id; ?>" name="dl">

然后在您的代码中,您已经在按钮中使用了 id(而且它也将是 div_),因此您可以在“成功”中执行以下操作:

$("#div_"+id).html(html);
于 2012-10-15T13:14:49.340 回答
0

首先避免使用相同的IDS。
然后你可以使用 CSS 选择器:

$('div.class') //div
$('input[type="button"].youridclass')
于 2012-10-15T13:14:59.340 回答
0

您不能为此目的使用 id 属性,id 不能是数字(有效的 html),因此 id 需要是唯一的。请改用数据属性。

于 2012-10-15T13:18:23.520 回答
0

首先,ids应该是唯一的,你会遇到问题,特别是在使用 jQuery 时,如果你有相同的id.

如果没有看到你的标记,很难给你一个有效的例子。但是您可以通过遍历 DOM来获取与单击iddiv对应的。button

示例标记:

<div id="example-div">
  <input type="button" value="Example" />
</div>

jQuery

$('input[type="button"]').click(function() {
  console.log($(this).parent('div').prop('id'));
}); 

// outputs 'example-div'
于 2012-10-15T13:21:22.347 回答
0

供您参考,请查看以下链接,了解可用于选择给定父元素的 dom 元素的各种方法。
jsperf.com/jquery-selectors-context/2

于 2012-10-15T13:25:58.097 回答