2012-10-15 54 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