2010-01-22 100 views
6

我是一个非常新的jQuery,并且无法调用一个以上的函数实例。jquery - 我如何用不同的元素id标签调用相同的函数?

我有一个函数

$('#open_dialog').click(function(){ 
    $("#dialog").dialog("open"); 
     return false;  
}); 

调用这个函数我有OPEN_DIALOG的ID标签名称的HREF链接。显然,如果它是引用该函数的页面上的唯一链接(一对一关系),它将很有效。但是,我想(多对一的关系)。

我有一个包含25条记录的表格,我要求每条记录都有一个链接,它将调用open_dialog函数我知道所有ID都不能称为open_dialog,因为它们必须是唯一的,因此如何访问该函数在传递我的25条记录中的一条的值时实例化该函数。顺便说一下,我的记录是动态的,因此$('#open_dialog,open_dialog2,open_dialog3,...')是不实际的。

谢谢你看我的帖子

回答

11

,而不是使用唯一的ID,你可以使用你的项目一类,那么只需使用

$('.classname').click(function() 
{ 
    // 'this' would reference the anchor that was clicked 
    $("#dialog").dialog("open"); 
     return false;  
}); 

也可以在另一属性添加到锚,即

<a href="#" class="classname" record="14">Record 14</a> 

那么你的函数里面,你可以有

var record = $(this).attr("record"); 

record现在将包含14

+0

+1 - 即将提交相同的答案。 – Buggabill 2010-01-22 14:23:05

+0

Thaks约翰这是一个很大的帮助唯一的另一件事是我如何传递一个参数的功能,例如,如果recordnumber 14被点击我需要open_dialog函数知道它是通过记录14初始化,没有其他 – Bazza 2010-01-22 14:27:36

+1

我的建议是为此使用元素ID。如果您正在动态构建页面,则每个元素在创建时都可以分配一个唯一的ID。然后,您可以使用$(this).attr(“id”)来引用被单击的元素的ID。 – Buggabill 2010-01-22 14:34:08

0

你可以使用的代替ID

$('.open_dialog').click(function(){ 
    $('#dialog').dialog("open"); 
    return false; 
}); 
+0

所有具有“open_dialog”类的元素将打开一个对话框。 – Reigel 2010-01-22 14:24:00

+0

不起作用 - $(this)将引用被点击的链接,这不是他想要打开的对话框。您必须在包含对话框内容的ID上调用.dialog,在他的情况下是'#dialog'。 – Parrots 2010-01-22 14:24:47

0

你将我们的一类,而不是选择一个id选择。

应用同一类每个链接的......可以说,“openDialog”

<a class='openDialog' href='your link here'>Your text here</a> 

在jQuery中,你会改变你要这个......

$('.openDialog').click(function(){ 
    $("#dialog").dialog("open"); 
    return false;  
}); 

尽管我对“#dialog”id引用的内容感到困惑。你没有真正解释上面的情况......或者至少我没有得到它,如果你这样做。

如果记录集中有任何值需要传递给onclick函数,则可以将每个锚标记的id(假设这些值是唯一的)设置为需要传递的值,然后引用它们像这样的代码中...(我已经存储在rec_no下面命名变量链接的ID ...

$('.openDialog').click(function(){ 
    var rec_no = $(this).attr("id"); 

    $("#dialog").dialog("open"); 
    return false;  
}); 
0

忘记这一切class废话每个人都在谈论,只如果你绝对必须使用(为什么如果没有必要的话,为标记添加膨胀?)。既然你说你的链接在一个表中,你可以像这样得到表中的所有链接......

$("table a").click(function() { ... }); 

或者,如果你的餐桌上有一个ID ......

$("#tableId a").click(function() { ... }); 

获取点击事件中的记录ID是一件容易的事。取决于它是在列,这将提醒表中的第一列(click事件内)的价值...

var id = $(this).parent().siblings("td:eq(0)").text(); 
alert(id); 
0

我假设dialog功能需要知道哪个记录你”再指。您需要在HTML中输出某种类型的记录。例如。

<a class="open_dialog" id="record1"></a> 

然后修改dialog函数接受该记录的ID作为参数,并把它传递的是这样的:

$('.open_dialog').click(function(){ 
    $("#dialog").dialog("open", $(this).id); 
    return false; 
}); 

是你的职责dialog一个,或者说内置在jQuery的?

相关问题