2012-10-15 94 views
0

我有按鈕和div,並且在每個部分中我都有相同的ID我想要獲得按鈕的ID並使用它來刷新div html.how應該寫*部分嗎?用jquery指定div id

$(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我想只更新realted到按鈕

股利
+2

有效的HTML不會重複使用ID's ...最好將它作爲類而不是ID,元素可以處理多個類。 – JKirchartz

+3

ID必須是唯一的。 – undefined

+0

如果我上課,它會更新整個div,但我只想更新與該按鈕相關的div – Nickool

回答

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_),這樣你就可以成功了ss'只是做:

$("#div_"+id).html(html); 
+0

接受:)你救了我從麻煩!非常感謝你 – Nickool

0

嘗試類似:

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

獲得按鈕的ID,然後去改變它:

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

然後使用新的ID:

$("#yourNewId").doSomething(); 
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(/* ... */); 
} 
+0

看到我有很多div我不想更新整個!我想只更新div realted到按鈕 – Nickool

+0

@nikparsa更新我的答案 – JKirchartz

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>

+0

謝謝,以及如何使用它的JUST div? – Nickool

0

首先避免使用相同的IDS。
然後你可以使用CSS選擇器:

$('div.class') //div 
$('input[type="button"].youridclass') 
1

你不能有相同的id兩個按鈕和DIV,id必須是在文檔中是唯一的。

什麼我可能做的就是把DIV上的按鈕爲data-divid屬性(與prefix data-所有屬性都是有效的上的所有元素爲HTML5,並在早期版本的HTML無害的),像這樣的id

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

...然後在您的success回調中使用該id var(因爲回調是在定義了id的上下文中創建的閉包,所以回調有權訪問id)。

下面是一個簡單的例子:Live copy | source

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; 
    }); 
}); 
+0

正如附註所說,你可以使用'.data()'來檢索html5'data-'屬性,這些值自動被拉入jQuery'data'對象中(例如'jQuery 1.4.3' ) – billyonecan

+0

@billyonecan:你可以,但我不建議你這樣做。數據對'data- *'屬性的使用是不對稱的,容易被誤解。'data'只使用'data- *'屬性值進行初始化,然後'data'和'data- *'屬性之間沒有**連接。可能出現的混淆示例:http://jsbin.com/osekut/1 –

0

你不能使用id屬性爲目的,ID不能是數字(有效的HTML),從而ID的需求是唯一的。改用數據attrib。

0

首先,ids應該是唯一的,您會遇到問題,尤其是在使用jQuery時,如果您的元素具有相同的id

沒有看到你的標記,很難給你一個工作的例子。但是通過遍歷DOM,您可以獲得divid,這對應於點擊的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' 
0

供您參考檢查下面的鏈接,你可以用它來選擇給出的父元素的DOM元素的各種方式。
jsperf.com/jquery-selectors-context/2