父ID的jQuery范围

时间:2009-09-24 12:54:41

标签: javascript jquery jquery-ui

我想知道如何实现这个目标:

<div id="1234345" class="item">
<script type="text/javascript">
function getItem() {
alert($(this).attr('id')); // I want this to be 1234345
}
getItem();
</script>
</div>

<div id="1239345" class="item">
<script type="text/javascript">
function getItem() {
alert($(this).attr('id')); // I want this to be 1239345
}
getItem();
</script>
</div>

它们都不起作用,但我需要确保两个部分具有完全相同的代码,但返回正确的ID。

8 个答案:

答案 0 :(得分:1)

<div id="1234345" class="item">
  <script type="text/javascript">
    document.write('<div id="unique_id"></div>');
    function getItem() {
      alert($('div#unique_id').parent().attr('id')); // this will be 1234345
      $('div#unique_id').remove();
    }
    getItem();
  </script>
</div>

答案 1 :(得分:0)

你有javascript如何向后与html交互,js没有在script-tag的上下文中运行。

答案 2 :(得分:0)

除了fredrikholmstrom的答案之外,第二个“getItem”函数会破坏第一个,所以你将获得一个。

答案 3 :(得分:0)

首先,您的ID不符合 HTML 4 spec

ID和NAME令牌必须以字母 ([A-Za-z])开头,后面可以跟任意数量的字母,数字([0- 9]),连字符(“ - ”),下划线(“_”),冒号(“:”)和句号(“。”)。

请勿将您的javascript与HTML标记混合 。将两者分开。

您可以使用

$(".item" ).attr ( "id" );

获取div的id

答案 4 :(得分:0)

这是你实际想到的吗?

<div class="item">
<input type="hidden" value="1239345"/>
<span class="button">Click me</span>
</div>

<div class="item">
<input type="hidden" value="45454443"/>
<span class="button">Click me</span>
</div>

<script type="text/javascript">
$('div.item span.button').click(function()
{
    alert($(this).closest('div.item').children('input[type=hidden]').val())
})
</script>

答案 5 :(得分:0)

鉴于此标记

<div id="1234345" class="item"></div>
<div id="1239345" class="item"></div>
获取id的jQuery方法将是

$(function() {

    // get an array of the matching element ids
    var ids = $.map($('div.item'), function(v) { return v.id });

    // concatenate string from the array values
    alert(ids.join(','));

});

或者您可能想要每个<div class="item">

的点击事件处理程序
$(function() {

    // attach a click event handler to all <div class="items">
    // that exist when DOM has finished loading
    $('div.item').click(function() { 
        alert(this.id);
    });

});

答案 6 :(得分:0)

$(document).ready(function(){    
  $(".item").each(function(){ 
      $("#"+this.id).html(GetItem(this.id));
       });
 });

您可以将此添加到您的页面。应该工作,除非你想把它绑定到任何“.item”的点击事件

答案 7 :(得分:-1)

我认为$(this)是调用函数的元素的id,在这种情况下,文档不是div。

检查一下,这是一个很好的阅读:http://www.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/