首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取按钮的父div

问获取按钮的父div
EN

Stack Overflow用户
提问于 2014-11-26 14:22:35
回答 4查看 107关注 0票数 0

我正在尝试获取“button1”的父div,并启用该div中的所有输入(我目前已禁用它们)。

代码语言:javascript
复制
<div id="wrapper">
<div id="gameInfo">
<asp:TextBox ID="gameTitle"/>
<asp:TextBox ID="gameType" />
<asp:TextBox ID="gameprice"/>
<input type="button" id="button1" value="enable" onClick="myFunc()"/>
</div>

javascript:

代码语言:javascript
复制
function myFunc() {
            setTimeout(function () {
                var inputs = document.getElementById("button1").parentNode.querySelectorAll('input[type="text"]');
                [].forEach.call(inputs, function (input) {
                    input.disabled = false;
                });
            });
        }

我正在尝试获取button1的父节点,但我并不确定正确的方法,但我希望按钮的父div中的所有输入都启用,但只启用我单击的按钮的父div。有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-26 14:55:37

我会做一些不同的事情(没有setTimeout):

​

代码语言:javascript
复制
function myFunc(elm){
   for( var inputs = elm.parentNode.querySelectorAll('input[type="text"]')
      ,          L = inputs.length
      ; L--
      ; inputs[L].disabled = false  //enable inputs
      ); //end loop
}
代码语言:javascript
复制
<div id="wrapper">
  <div id="gameInfo">
    <input type="text" ID="gameTitle" disabled="disabled" />
    <input type="text" ID="gameType" disabled="disabled" />
    <input type="text" ID="gameprice" disabled="disabled" />
    <input type="button" id="button1" value="enable" onclick="myFunc(this)" />
  </div>
</div>

​

对于不支持querySelectorAll (并可选择支持disabled)的浏览器,可供选择:

​

代码语言:javascript
复制
function myFunc(elm){
   for( var inputs = elm.parentNode.getElementsByTagName('input')
      ,          L = inputs.length
      ; L--
      ; inputs[L].type.toLowerCase()==='text' && (inputs[L].disabled = false)
      ); //end loop
}
代码语言:javascript
复制
<div id="wrapper">
  <div id="gameInfo">
    <input type="text" ID="gameTitle" disabled="disabled" />
    <input type="text" ID="gameType" disabled="disabled" />
    <input type="text" ID="gameprice" disabled="disabled" />
    <input type="button" id="button1" value="enable" onclick="myFunc(this)" />
  </div>
</div>

​

上述两个函数的思想都是将单击的元素(按钮)传递给函数:onclick="myFunc(this)"。

这也适用于多个div(“行”),而不需要硬编码id。

这会让你开始的!

票数 0
EN

Stack Overflow用户

发布于 2014-11-26 14:28:19

您只是没有正确地调用myFunc --您需要括号才能真正调用它:

代码语言:javascript
复制
<input type="button" id="button1" value="enable" onClick="myFunc()"/>

​

代码语言:javascript
复制
function myFunc() {
  setTimeout(function() {
    var inputs = document.getElementById("button1").parentNode.querySelectorAll('input[type="text"]');
    [].forEach.call(inputs, function(input) {
      input.disabled = false;
    });
  });
}
代码语言:javascript
复制
<input type="text" disabled="disabled" value="another box" />
<div id="wrapper">
  <input type="text" disabled="disabled" value="ignore me" />
  <div id="gameInfo">
    <input type="text" ID="gameTitle" disabled="disabled" />
    <input type="text" ID="gameType" disabled="disabled" />
    <input type="text" ID="gameprice" disabled="disabled" />
    <input type="button" id="button1" value="enable" onClick="myFunc()" />
  </div>
</div>

​

票数 0
EN

Stack Overflow用户

发布于 2014-11-26 14:31:12

如果您使用jquery进行DOM遍历,则可以执行以下操作:

代码语言:javascript
复制
 $('#<%= button1.ClientID %>').on('click', function() {
      $(this).parent().find('input[type=text]').removeAttr('disabled');
 });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27151521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档