2012-04-30 141 views
6

我有以下代碼如何獲得ID打開對話框

<td><a href="#" id="dialog_link-19" class="ui-state-default ui-corner-all">Click here</a></td> 
<td><a href="#" id="dialog_link-25" class="ui-state-default ui-corner-all">Click here</a></td> 
<td><a href="#" id="dialog_link-33" class="ui-state-default ui-corner-all">Click here</a></td> 
<td><a href="#" id="dialog_link-556" class="ui-state-default ui-corner-all">Click here</a></td> 

#dialog_link是動態生成的。

在我的js我需要知道哪些被點擊。

這是我的js

$('#dialog').dialog({ 
      autoOpen: false, 
      width: 600, 
      buttons: { 
       "Ok": function() { 
        $(this).dialog("close"); 
       }, 
       "Cancel": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 

     // Dialog Link 
     $('#dialog_link').click(function(){ 
      $('#dialog').dialog('open'); 
      $.ajax({ 
        url: "teams/pp", 
        type: "POST", 
        data: 
        success: function(data){ 

        console.log(data); 

        } 

       }); 

      return false; 
     }); 
+1

我很困惑。在這段代碼中,你需要知道哪個框被點擊了?如果ID是自動生成的,那麼('#dialog_link')。click會做什麼?它似乎不會得到任何地方 – Ryan

回答

4

你可以得到它被點擊liek此一個的ID:

$('a[id*=dialog_link]').click(function(){ 
    var id = $(this).attr('id'); 

    console.log(id); 
}); 
9

使用id^代替id*,用於id^,表明id開始與給定的文本和id*匹配,如果給定的文本在id中可用,則任何地方甚至最後像id1-dialog_link

$("td a[id^='dialog_link']").click(function(){ 
    var id = $(this).prop('id'); 
    console.log(id); 
}); 

這裏a[id^='dialog_link']將匹配dialog_link-19但不id1-dialog_link

+0

由於使用道具,這是否比我的獲得更多upvotes?我想人們會誤解何時應該使用道具。直接從JQuery的prop()頁面:例如,selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked和defaultSelected應該檢索並使用.prop()方法進行設置。在jQuery 1.6之前,這些屬性可以使用.attr()方法檢索,但這不屬於attr範圍。這些沒有相應的屬性,只是屬性。 – Evan

+0

我認爲我們的答案還有另一個區別,它是選擇器字符串,您使用了'$('a [id * = dialog_link]')'這意味着任何包含這個單詞'dialog_link'的id在id內,而我的是$ ('a [id^= dialog_link]')'這意味着只有以'dialog_link'這個詞開頭的id。 –

2

這將返回點擊鏈接的數量:

$('a[id*=dialog_link]').click(function() { 
    var id = $(this).attr('id').replace('dialog_link-',''); 
    alert(id); 
}); 

Demo

我已經使用了.replace()功能刪除文本