0

我确信这可能已经得到了回答,但我不太确定我在问什么,所以如果你能指出我正确的方向,那将非常感激。

好的,所以我有一个功能,除了 id 号之外的所有功能都相同,最多 30

有没有办法我可以做到这一点而无需重复 30 次

下面的例子

$('ul#grid li#project_001 a').click(function(){ 
$('.colOne').html(ajax_load).load('ajax/project_001.html');
}); 

$('ul#grid li#project_002 a').click(function(){ 
$('.colOne').html(ajax_load).load('ajax/project_002.html');
});

$('ul#grid li#project_003 a').click(function(){ 
$('.colOne').html(ajax_load).load('ajax/project_003.html');
}); 

$('ul#grid li#project_004 a').click(function(){ 
$('.colOne').html(ajax_load).load('ajax/project_004.html');
});

谢谢你们的帮助

4

2 回答 2

1

像这样的东西会起作用:

$('#grid li[id^="project_"] a').click(function() {
    var id = $(this).closest('li').attr('id');

    $('.colOne').html(ajax_load).load('ajax/' + id + '.html');
});

虽然我会使用类data-并向这些<li>元素添加属性:

<li class="project" data-filename="ajax/project_004.html">

并使用.data()功能:

$('#grid li.project a').click(function() {
    var filename = $(this).closest('li').data('filename');

    $('.colOne').html(ajax_load).load(filename);
});
于 2013-02-28T23:36:00.307 回答
1

您想对属性进行匹配:

$('ul#grid li[id^="project_"] a').click(function(){

    var id = $(this).closest('li').attr('id');

    $('.colOne').html(ajax_load).load('ajax/'+id+'.html');
});

[id^="project_"]has an attribute that starts with "project_"

尽管您最好创建一个类,然后使用数据属性来存储数字:

<li class="project" data-projnum="004">...

JS:

$('ul#grid li.project a').click(function(){ 

    var projnum = $(this).closest('li').data('projnum');

    $('.colOne').html(ajax_load).load('ajax/project_' + projnum + '.html');
});
于 2013-02-28T23:36:18.413 回答