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値を使用することはできません。値はドキュメント内で一意である必要があります。

私がおそらく行うことは、divを属性idとしてボタンに配置することです (プレフィックスdata-dividを持つすべての属性は、HTML5 の時点ですべての要素で有効であり、HTML の以前のバージョンでは無害です)、次のように:data-

<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');

...そして、そのidvar をコールバックで使用しsuccessます (コールバックはidが定義されているコンテキスト内で作成されたクロージャであるため、コールバックは にアクセスできますid)。

簡単な例を次に示しますソース

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

その目的でid属性を使用することはできません。また、idを数値(有効なhtml)にすることはできないため、idは一意である必要があります。代わりにデータ属性を使用してください。

于 2012-10-15T13:18:23.520 に答える
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

次のようなものを試してください:

$('.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

まず、同じ IDS を使用しないようにします。
次に、CSS セレクターを使用できます。

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

何よりもまず、ids一意である必要があります。特に jQuery を使用する場合、同じid.

マークアップを見ないと、実際の例を示すのは困難です。ただし、DOM をトラバースすることで、クリックされた に対応するidのを取得できます。divbutton

マークアップの例:

<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 に答える