【问题标题】:how to get the id to open dialog box如何获取打开对话框的id
【发布时间】:2012-05-10 10:17:54
【问题描述】:

我有以下代码

<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;
        });

【问题讨论】:

  • 我很困惑。在这段代码中你需要知道哪个框被点击了?如果 ID 是自动生成的, ('#dialog_link').click 有什么作用吗?好像哪里都去不了了

标签: jquery-ui jquery jquery-plugins jquery-selectors


【解决方案1】:

使用id^ 代替id*id^ 用于指示以给定文本开头的idid* 匹配,如果给定文本在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

【讨论】:

  • 这是不是因为使用了道具而获得了比我更多的支持?我认为人们误解了何时应该使用道具。直接来自 JQuery prop() 页面:例如,应使用 .prop() 方法检索和设置 selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked 和 defaultSelected。在 jQuery 1.6 之前,可以使用 .attr() 方法检索这些属性,但这不在 attr 的范围内。这些没有对应的属性,只是属性。
  • 我认为我们的答案还有另一个区别,它是选择器字符串,您使用了$('a[id*=dialog_link]'),这意味着任何包含此单词的 id 在 id 中的任何位置 dialog_link,而我的是 $('a[id^=dialog_link]'),这意味着只有以单词dialog_link开头的ID。
【解决方案2】:

您可以通过以下方式获取被点击者的 ID:

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

    console.log(id);
});

【讨论】:

    【解决方案3】:

    这应该返回点击的链接数:

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

    Demo

    我已使用.replace() 函数删除文本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      相关资源
      最近更新 更多