Javascript jquery是选择tablerow数据的有效方法

Javascript jquery是选择tablerow数据的有效方法,javascript,jquery,html,Javascript,Jquery,Html,我有一个具有多行相同模式的表: <tr role="row" class="even"> <td><input type="checkbox" id="valj4"></td> <td>Generell grupp</td> <td><a href="/Home/DeviceDetails?uuid=2b9fe569-dd6a-403c-b973-fd577acf12b5">IKT Ipa

我有一个具有多行相同模式的表:

<tr role="row" class="even">
  <td><input type="checkbox" id="valj4"></td>
  <td>Generell grupp</td>
  <td><a href="/Home/DeviceDetails?uuid=2b9fe569-dd6a-403c-b973-fd577acf12b5">IKT Ipad11-    Mirko</a></td>
  <td>Grundinställningar</td>
</tr>

格鲁普将军
格伦登斯特·伊尔宁格尔

每一行都有一个具有唯一ID的复选框,使用复选框获取行的UUID列表的最有效方法是什么。我想使用jQuery。

我假设您的表有一个id,它是“#table id”:

会给你所有的复选框和无线电框

$("#table-id").find("input[type='checkbox']:checked")
会给你所有的复选框

var ids = "";
$("#table-id").find("input[type='checkbox']:checked").each(function(){
    ids += $(this).attr("id") + ",";
});
将给您一个逗号分隔的列表,其中包含表中复选框的ID

以及UUID列表:

var UUIDs = "";
$("#table-id").find("input[type='checkbox']:checked").each(function(){
    var href = $(this).closest("tr").find("td > a").first().attr("href");
    var UUID = href.split('?')[1];
    UUIDS += UUID + ",";
});
试试这个

$( "input[type=checkbox]" ).change(function() {
 if($(this).is(":checked")) {
     alert($(this).attr("id"));
  }
 }); 
$(函数(){
var文本=[];
$('tr td:has(input:checkbox:checked)~td>a')。每个(函数(i,e){
text.push($(e).attr('href');
});
$('#result').html(text.join('
'); })

格鲁普将军
格伦登斯特·伊尔宁格尔
格鲁普将军
格伦登斯特·伊尔宁格尔
格鲁普将军
格伦登斯特·伊尔宁格尔

创建新的UUID列表

var listOfUUIDs = [];
获取选中的输入,转到祖父母(tr),然后在其中找到a

浏览a的列表,将UUID添加到列表中

$("tr input[checked=checked]").parent().parent().find("td a").each(function(){ 
    listOfUUIDs.push(
        $(this).prop('href').substr(indexOf("uuid=") + 5)
    )
});

这会给你你所需要的

$('tr').each(function(index) {
    var $this   = $(this), 
        input   = $this.find('input'),
        result  = '';

    if ( input.is(':checked') ) {
        var uuid    = $this.find('a').attr('href').replace(/^\/Home\/DeviceDetails\?uuid=/g, ""),
            result  = result + index + '. ' + input.attr('id') + ' has the uuid: ' + uuid + '<br />';
    }

    $('#result').html(result);
});
$('tr')。每个(函数(索引){
变量$this=$(this),
input=$this.find('input'),
结果='';
if(input.is(':checked')){
var uuid=$this.find('a').attr('href').replace(/^\/Home\/DeviceDetails\?uuid=/g,“”),
result=result+index+'.+input.attr('id')+'具有uuid:'+uuid+'
'; } $('#result').html(result); });
我会尝试以下方法

var ids = [];
$("#table input:checkbox:checked").each(function () {
    var uuid = getParameter($(this).closest('tr').find('a').eq(0).attr('href'))
    ids.push(uuid);
});

function getParameter(url) {
    var regex = new RegExp("[\\?&]uuid=([^&#]*)"),
        results = regex.exec(url);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
其中
#table
是表的id

jQuery('#formId').find('tr[class=偶数]).each(函数(){


}))

您可以与我们分享您迄今为止的尝试吗?您还可以在字段上添加一个类,并使用foreach对其进行迭代,然后检查当前复选框id,以您希望的方式对其进行操作您是否尝试过任何操作?我怀疑这不是关于效率,而是关于“如何做?”你试过什么吗?我现在使用foreach,但我认为某种jquery选择器更好?我需要的是UUID而不是checkbox@Lix:是的,这是编写和显示结果最快的方法。替换为nicer.very nice选择器以获取链接+1:)注意:
输入与
:选中的
选择器是冗余的<代码>:复选框:选中
就足够了。您的
replace()
命令远远特定于要用作完整解决方案的示例HTML。如果每次链接都相同,这将是一个快速解决方案,如果链接不同,而不是使用类似的替换,但是我认为这应该足够了。为了方便其他读者,请简要解释您的答案。
:checkbox
伪选择器比使用
input[type='checkbox']
更简单,因此您只需将
$('#表id:checkbox:checkbox:checked)
作为选择器即可<代码>:复选框
从jQueryYes的1.0版开始就可用,我不记得了,因为我通常使用属性选择器类型。
var ids = [];
$("#table input:checkbox:checked").each(function () {
    var uuid = getParameter($(this).closest('tr').find('a').eq(0).attr('href'))
    ids.push(uuid);
});

function getParameter(url) {
    var regex = new RegExp("[\\?&]uuid=([^&#]*)"),
        results = regex.exec(url);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var rowId = "";

this.find('input[type=checkbox]').each(function() {

    if(this.checked) {
        rowId = "row" + $(this).val();
    }

});
$(this).attr('id', rowId);