2011-11-04 89 views
0

我该怎么做? 我的html结构看起来像这样 编辑:我已经更新到html,所以它符合规则。jquery div是通过id选择的,选择类的值

<td id="1" class="LinkWrap"><a href="" class="link">link</a></td> 

我用这个代码:

$(".link").click(function() { 
$(this).parent(); 
//some ajax code 
}); 

要选择由ID LinkWrap的TD,但我需要的类的价值, 类的价值是由PHP & & MySQL和牵强是我提取的元素的id。因此,价值不是一个常数,我不能只说选择类与价值1它可能是2或5932.

我需要这个值给我的ajax脚本,所以我可以插入时,用户单击该链接。 如果theres更好的方法,请让我知道:)

+0

让你在使用ID类和类作为标识?我想知道使用类来识别_single_元素的逻辑,而您并未提及您的ID如何更改。 –

+0

嗯..也许我写了一些错误的... 以及我已经编辑了我的脚本从重要的是,我存储的数据里面的id而不是类前:我这样做是因为我想在用户点击链接时将其插入数据库,并且我想知道用户按下链接的确切位置:) – Flaashing

回答

3

除了不建议开始使用数字类名称的事实。使用attr来获取类属性。

$(".link").click(function() { 
    alert($(this).parent().attr('class')); 
}); 

编辑:您最好使用其他人声明的数据属性。

HTML

<td data-rowid="1" class="LinkWrap"><a href="" class="link">link</a></td> 

的Javascript

$(".link").click(function() { 
    alert($(this).parent().data('rowid')); 
}); 
+0

谢谢! btw我可以写创建另一个数据rowid?所以我有data-rowid和data-rowuser? – Flaashing

+0

是的,你当然可以。 –

+0

非常感谢很多:) – Flaashing

0

我想你需要如下。

$(this).parent().attr('class'); 

编辑:同样也是他人陈述的数据属性。

3

这听起来像你在做class属性中的数据存储。班级不能以数字开头,这意味着您的无效使用可能会导致在某些浏览器中出现故障。您最好将jQuery的data()data-*属性结合使用。

+0

ive决定把数据放入ID,而不是 ,但这是如何工作的?编号爱知道一个更好的方式比在ID中存储数据:) – Flaashing

+1

ID的不能以数字开头。 –

1

Interstellar_Coder和wilbbe01在执行中都是正确的,但是代码中有一件东西会咬你。 td有一个ID,如果重复,可能会导致您引用问题。 id属性在整个DOM实例中应该是唯一的,以避免在不同浏览器中出现非常不可预知的结果。

除了ceejayoz解决方案是最好的。

0

因为,正如我在我的评论中提到,看来你混了类和ID,并避免ceeyajoz提到的问题,我建议使用另一种方法:

$('.link').click(function(e){ 
    var the_id = $(this).closest('td').attr('id'); //or parent(). 
    $.ajax({ 
     url: 'http://www.mysite.com/index.php?page_id='+the_id, 
     success:function(response){ 
     alert(response); 
     } 
    }); 
    e.preventDefault(); 
}); 

而在你的HTML:

<td class="LinkWrap" id="td_1"><a href="" class="link">link</a></td> 

而且在你的PHP:

$id = $_GET['page_id']; 
$id = str_replace('td_','',$id); 
echo $id; 
+0

谢谢:)几乎相同的jquery代码,我想通了。感谢您的额外的PHP,没想到:( 所有其他代码的工作,以及谢谢你! – Flaashing