这是我的应用程序从webserver日志文件生成的html文档的片段:
<div class='ip' id='220.181.108.95'>
<h3>220.181.108.95</h3>
<h4 class='records' id='220.181.108.95'>
Records:
</h4>
<div class='records' id='220.181.108.95'>
<div class='record' id='220.181.108.95'>
<p>ip: 220.181.108.95 timestamp: 15/Jun/2011:21:21:14 +0100 access_request_type: GET page: / status_code: 200 </p>
</div>
<div class='record' id='220.181.108.95'>
<p>ip: 220.181.108.95 timestamp: 13/Jun/2011:08:18:09 +0100 access_request_type: GET page: / status_code: 200 </p>
</div>
<div class='record' id='220.181.108.95'>
<p>ip: 220.181.108.95 timestamp: 12/Jun/2011:13:23:11 +0100 access_request_type: GET page: / status_code: 200 </p>
</div>
</div>
</div>
<div class='ip' id='123.125.71.60'>
<h3>123.125.71.60</h3>
<h4 class='records' id='123.125.71.60'>
Records:
</h4>
<div class='records' id='123.125.71.60'>
<div class='record' id='123.125.71.60'>
<p>ip: 123.125.71.60 timestamp: 11/Jun/2011:04:19:31 +0100 access_request_type: GET page: /stylesheet.css status_code: 200 </p>
</div>
</div>
</div>下面是一些我一直用来切换记录div的JQuery:
<script>
$(document).ready(function(){
$("h4.records").click(function(){
var id = $(this).attr("id");
$("div#".concat(id, ".records")).toggle();
});
});
</script>我对它的运作方式有两个问题:
是否有一种方法可以将id保留为ip地址(这显然是唯一的记录引用),并且只按类和id切换确切的div,而不是使用该类切换所有div?
任何帮助都是非常感谢的。我知道几种语言,但很少用javascript编写,而且我以前也没有使用过JQuery。
JQuery版本为1.6.1,JQueryUI也正在加载,版本为1.8.13。
一些简短的注释:
我已经将解决方案放在一个应用程序中,用于读取for服务器访问日志,并通过ip查看他们的地理信息,如果有人感兴趣的话,代码就在Github上。我会给这里的每个人提供下一次推杆的道具!感谢你们所有人!
发布于 2011-06-16 03:40:01
问题有两个:
document.getElementByID。class,或者完全删除重复的ID。一旦DOM包含了多个具有给定ID的元素,所有投注都会取消,此后不久就可能会调用Cthulhu。尽管如此,您只需使用 .closest() 就可以完全忘记元素ID。
HTML
<div class='ip' id='220.181.108.95'>
<h3>220.181.108.95</h3>
<h4 class='records'>
Records:
</h4>
<div class='records'>
<div class='record'>
<p>ip: 220.181.108.95 timestamp: 15/Jun/2011:21:21:14 +0100 access_request_type: GET page: / status_code: 200 </p>
</div>
<div class='record'>
<p>ip: 220.181.108.95 timestamp: 13/Jun/2011:08:18:09 +0100 access_request_type: GET page: / status_code: 200 </p>
</div>
<div class='record'>
<p>ip: 220.181.108.95 timestamp: 12/Jun/2011:13:23:11 +0100 access_request_type: GET page: / status_code: 200 </p>
</div>
</div>
</div>
<div class='ip' id='123.125.71.60'>
<h3>123.125.71.60</h3>
<h4 class='records'>
Records:
</h4>
<div class='records'>
<div class='record'>
<p>ip: 123.125.71.60 timestamp: 11/Jun/2011:04:19:31 +0100 access_request_type: GET page: /stylesheet.css status_code: 200 </p>
</div>
</div>
</div>JavaScript
$(function(){
$("h4.records").live('click', function(){
$(this).closest('div.ip').find('div.records').toggle();
});
});其他世贸组织:
this.id而不是$(this).attr('id')。(见什么时候使用香草JavaScript和jQuery?).concat()?真的?(级联操作符)怎么了?(没有个人冒犯的意思。这是密码,不是你。)
演示:http://jsfiddle.net/mattball/fE9Xf/
发布于 2011-06-16 03:36:21
在HTML中,多个节点不能具有相同的“id”。这就是问题所在。而不是id,您应该使用一些其他属性,也许是一个数据id,然后它就可以工作了。
发布于 2011-06-16 04:01:06
我建议您使用自定义属性而不是id。
<div class='record' ip='1.2.3.4'><p></p></div>因此,在js中,您可以:
$('div.record[ip="' + target_ip + '"]').toggle();https://stackoverflow.com/questions/6366798
复制相似问题