【问题标题】:jquery find and click image in table row, on checkbox checkedjquery在表格行中查找并单击图像,选中复选框
【发布时间】:2016-01-13 12:44:37
【问题描述】:

我有一个 ASP Gridview,它在一列中有一个 img 标记,在下一列中有一个复选框。如果图像的 src 包含某个字符串,我想在用户选中复选框时触发我在 img 上放置的点击事件(针对所选行)。

将此$("[src*=plus]").trigger("click"); 放在我的复选框的单击事件中有效,但它会为每一行触发事件,而不仅仅是选中复选框所在的行。 我已经尝试了几件事,最新的是 $(this).closest("tr").child("[src*=plus]").trigger("click");,但我无法让它仅在一行中触发。

如何找到正确的 img 标签并触发它的点击事件?

【问题讨论】:

    标签: jquery asp.net checkbox click src


    【解决方案1】:
      function DoSomething(Obj) {
        alert($(Obj).attr('src'));
    }
    
    $(document).ready(function () {     
    
        $('.test').click(function () {        
    
        //if($(this).closest('tr').find('img').attr('src') != 'xxxx')
          //{
            $(this).closest('tr').find('img').trigger("click");
          //}
        });
    
    
    });
    <table>
    <tr>
        <td><img  src="first_img" onclick="DoSomething(this);" style="border:double 2px red;width:100px;"/>img</td>
        <td><input type="checkbox" class="test" /></td>
    </tr>
    <tr>
        <td><img src="second_img" onclick="DoSomething(this);" style="border:double 2px red;width:100px;"/>img</td>
        <td><input type="checkbox" class="test"/></td>
    </tr>
    

    【讨论】:

    • 确实找到了正确的 img 标签,但是它总是会触发点击事件。如何根据找到的标签的 src 值进行限制?
    • $('.test').click(function () { if($(this).closest('tr').find('img').attr('src') ! = 'xxxx') { $(this).closest('tr').find('img').trigger("click"); } });
    • 谢谢,这确实让我找到了正确的 img 标签,并且只在某些值的情况下触发事件!有什么方法可以使用通配符 (*),就像我在我的问题中所说的那样 - 这样我就不必拥有完整的位置字符串?
    【解决方案2】:

    我认为您最好将更多的数据属性(如data-id)放在每一行中,并使用如下内容:

    # suppose the row/element you want has data-id = 3
    
    $("[data-id=3]").trigger("click");
    

    【讨论】:

    • 我正在扩展此处aspsnippets.com/Articles/… 的嵌套gridview 功能,因此无法为每个图像添加唯一ID。另外,我只想在 src 为 plus 时触发 click 事件——我不希望在 src 更改为 minus 时触发它。
    【解决方案3】:

    为什么在创建列时不使用 asp 标签?可以使用您从后面的代码传递的数据源中的数据通过模板列来完成。

    【讨论】:

    • 该字段与数据源中的任何数据都没有关联,它只是一个硬编码图像放入每一行 &lt;asp:TemplateField&gt; &lt;ItemTemplate&gt; &lt;img alt="" style="cursor: pointer" src="Images/plus.png" /&gt; &lt;/ItemTemplate&gt; &lt;/asp:TemplateField&gt; 我只希望代码针对 src 为 @987654322 的行触发@(它被其他代码改变)
    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多