JQuery单击“选择子图像”

JQuery On Click Select Child Image

本文关键字:图像 选择子图像 选择 单击 JQuery      更新时间:2023-09-26

我有一个datatables表,它也在使用行细节api。当我点击+-图像时,这一切都很好。

但是,我希望在单击整行时显示详细信息,而不仅仅是+-图像。

这是代码的一部分:

$('#table tbody td img').on('click', function () {
    var nTr = this.parentNode.parentNode;
    if ( this.src.match('details_close') )
    {
        /* This row is already open - close it */
        this.src = "../images/details_open.png";
        oTable.fnClose( nTr );
    }
    else
    {
        /* Open this row */
        this.src = "../images/details_close.png";
        oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' );
    }
});

我曾尝试从代码的第一行中删除img,并使用this.next('img').src和其他一些变体,但都返回了错误,表示匹配函数无法使用它们。如何更改代码,以便单击整行而不仅仅是图像?

以下更改应该有效:

$('#table tbody tr').on('click', function () {
   var nTr = this,
       img=$(this).find('td img')[0];
   if (img.src.match('details_close') )
    {
       /* This row is already open - close it */
       img.src = "../images/details_open.png";
       oTable.fnClose( nTr );
    }
   else
    {
       /* Open this row */
       img.src = "../images/details_close.png";
       oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' );
    }
} );

.match()调用出现问题的最可能原因是,您将直接Node访问替换为jQuery对象,而该对象没有匹配方法。

你试过这个吗?

 $('#table tbody td').on('click', function () {
   var nTr = this.parentNode.parentNode;
   if ( $('#table tbody td').src.match('details_close') )
    {
       /* This row is already open - close it */
       $('#table tbody td').src = "../images/details_open.png";
       oTable.fnClose( nTr );
    }
   else
    {
       /* Open this row */
       $('#table tbody td').src = "../images/details_close.png";
       oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' );
    }
} );