【问题标题】:select a different element other than the one clicked选择与单击的元素不同的元素
【发布时间】:2010-01-12 20:52:55
【问题描述】:

如何使用 jquery 选择一个元素,当单击不同的元素时,当您不知道元素的名称时?下面的代码循环遍历所有类别。我不知道有多少类别,也不知道名称是什么。单击“insertUrl”链接时,我需要选择文本区域。

我唯一能想到的是在 onclick 中运行一个函数并将文本区域的名称作为参数传递。

另外,我不确定当每个链接都有相同的 id 时我是否可以使用选择器,所以这甚至可能吗?

<%
    FullName = objCategory.ID & "|" & objCategory.Name
%>      
<TD COLSPAN="2">
<TEXTAREA ROWS="5" CLASS="formWide" id="<%=FullName %>"><%= objCategory.Text %></TEXTAREA><br />
<a href="#" id="insertUrl">Insert URL</a>
</TD>

【问题讨论】:

    标签: javascript jquery asp-classic


    【解决方案1】:

    如果 HTML 结构保持不变,您可以使用 .prev()

    您不应该有具有相同 ID 的元素。你可以使用类class="insertUrl"

    <%
      FullName = objCategory.ID & "|" & objCategory.Name
    %>      
    <TD COLSPAN="2">
      <TEXTAREA ROWS="5" CLASS="formWide" id="<%=FullName %>"><%= objCategory.Text %></TEXTAREA><br />
      <a href="#" class="insertUrl">Insert URL</a>
    </TD>
    

    $(".insertUrl").click(function() {
      var textarea = $(this).siblings('textarea');
    });
    

    【讨论】:

    • $(this).prev().prev();因为
      而工作。这是不好的做法,还是有更好的方法?
    • 改为使用 $(this).siblings('textarea');正如 TeKapa 建议的那样
    【解决方案2】:

    如果你使用可能会更好:

    $(this).siblings('textarea');
    

    这样,您可以更灵活地使用 html 控件顺序。 这样,如果您删除
    或更改该 TD 中的其他内容,脚本仍然可以工作。

    【讨论】:

      【解决方案3】:

      更好的方法是使用&lt;label&gt; 元素。这样,您以后可以在文本注释和文本区域之间插入额外的元素,它仍然可以工作。

      <textarea id="ta_id1" onclick="click_processing_func"></textarea>
      <label for="ta_id1" class="link">Insert Url</label>
      

      现在,如果有人点击标签,textarea 将收到点击事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-23
        • 1970-01-01
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多