jquery - 如何使用不同的元素id标记调用相同的函数?

时间:2010-01-22 14:18:20

标签: jquery tags

我是jquery的新手,并且在调用多个函数实例时遇到问题。

我有一个功能

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

要调用此函数,我有一个带有id标记名为open_dialog的href链接。显然,如果它是引用该功能的页面上的唯一链接(一对一的关系),那么这种方法很有用。但是,我想要(多对一的关系)。

我有一个包含25条记录的表格,我要求每条记录都有一个链接,该链接将调用open_dialog函数我知道所有的id都不能被称为open_dialog,因为它们必须是唯一的,因此我如何访问函数,同时传递我的25条记录中的哪一条正在实例化该函数的值。

顺便说一句,我的记录是动态的,因此$('#open_dialog,open_dialog2,open_dialog3,...')不实用。

感谢您查看我的帖子

6 个答案:

答案 0 :(得分:12)

而不是使用唯一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。

答案 1 :(得分:0)

您可以使用 class 而不是 id

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

答案 2 :(得分: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(假设这些值是唯一的)为你需要传递的值,然后在代码中引用它们就像这样...(我已将链接的id存储在名为rec_no的变量中......

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

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

答案 3 :(得分:0)

忘掉其他人正在谈论的所有这些class废话。只有你必须使用它(如果没有必要,为什么要在标记中添加膨胀?)。既然你说你的链接在表格中,你就可以得到表格中的所有链接......

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

或者如果您的表上有ID ...

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

在点击事件中获取您的记录ID也很容易。取决于它所在的列。这将提醒表格中第一列的值(在点击事件中)......

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

答案 4 :(得分:0)

我假设dialog函数需要知道你所指的是哪条记录。您需要为HTML中的记录输出某种id。 E.g。

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

然后修改dialog函数以接受记录的id作为参数,并像这样传递:

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

dialog是你的一个函数,还是内置于jQuery的东西?

答案 5 :(得分:0)

代码:

$('#msgTextarea,#addmsg').keyup(function () {
        var thetext = $(this).val();

        if (thetext.length > 500) {
            $('#okbtn,#btnOk').attr('disabled', 'disabled');
        } else {
            $('#okbtn,#btnOk').removeAttr('disabled');
        }
    })