【问题标题】:How to hide html elements depending on what title they have with jQuery?如何根据 jQuery 的标题隐藏 html 元素?
【发布时间】:2010-07-12 03:12:25
【问题描述】:

我需要根据标题值隐藏一些元素(它是一个 SharePoint 网站,sharePoint 为所有元素名称和 ID 添加了一个 guid),我看到使用 jQuery 可以很容易地做到这一点,但我没有让它工作。

我看到了Get element by title jQuery,但它对我不起作用。我的代码的一部分是:

<script src="/System%20Configuration%20Files/jquery-1.3.2.min.js";  type="text/javascript";></script>
<script src="/System%20Configuration%20Files/jquery.SPServices-0.4.1.min.js";  type="text/javascript";></script>


<script type="text/javascript">  

$("document").ready(function ($) { 

//turn off all hidden fields for different record types, then conditionally turn fields off and on based upon the item level selected
//note that field level GUIDs can change when list columns are added or amended in the list

   var control;


//Progress Status
   control = $("select[title='Progress Status']");
   control.parentNode.parentNode.parentNode.style.display="none";


//Status Change Date
   control = $("select[title='Status Change Date']");

   control.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.style.display="none";



//Set for Milestone Action which is the default Item Level


//Strategic Objective
   control = $("select[title='Strategic Objective']");
   control.parentNode.parentNode.parentNode.style.display="";


//Strategic Priority
   control = $("select[title='Strategic Priority']");
   control.parentNode.parentNode.parentNode.parentNode.style.display="";


//Performance Measure
   control = $("select[title='Performance Measure']");
   control.parentNode.parentNode.parentNode.parentNode.style.display="none";


//Start Date   
   control = $("select[title='Start Date']");
   control.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.style.display="";


//Target Date
   control = $("select[title='Target Date']");
   control.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.style.display="";


//Priority
   control = $("select[title='Priority']");
   control.parentNode.parentNode.parentNode.style.display="";


//Percentage Complete
   control = $("select[title='% Complete']");
   control.parentNode.parentNode.parentNode.style.display="";


//Baseline
   control = $("select[title='Baseline']");
   control.parentNode.parentNode.parentNode.style.display="none";



//Current
   control = $("select[title='Current']");
   control.parentNode.parentNode.parentNode.style.display="none";



//Target
   control = $("select[title='Target']");
   control.parentNode.parentNode.parentNode.style.display="none";


      });

</script>

【问题讨论】:

  • 4 个空格或制表符缩进将格式化您的代码。
  • 请问?对不起,我没有关注你。

标签: javascript jquery


【解决方案1】:

jQuery 对象没有parentNode 属性。那是为了处理 DOM 元素。 jQuery 可以使整个任务变得更容易:

您可以使用.get() 来获取实际的 DOM 节点:

control.get(0).parentNode.parentNode.parentNode.style.display="none";

然而这对于 jQuery 来说有点倒退,更有意义的是使用 .parent().css()

control.parent().parent().parent().css('display', 'none');

更有意义的是只查找与您实际查找的内容相匹配的 .closest() 父级。 (即&lt;tr&gt;),也许只使用.hide()

control.closest('tr').hide();

就选择器而言,$("select[title='Something']") 将寻找 &lt;select title='something'&gt;,这可能不是您想要的...

【讨论】:

  • 嗨,我曾经有 getelementbyid 但由于 sharepoint 为每个 id 和 name 添加了一个 guid,我想按标题获取元素,而不是让它更易于维护。我有一个带有一些下拉列表和文本字段的表单,用户可以在其中输入有关项目的信息。根据项目类型,选择某些字段将被隐藏。那么你建议我如何改变例如: //Progress Status control = $("select[title='Progress Status']"); control.parentNode.parentNode.parentNode.style.display="none"; ?感谢您的宝贵时间。
  • 类似 ``$("select[title=Progress Status]").closest('tr').hide()... Adjust whats inside the .closest()` 的任何元素都可以让您疯狂@987654339 @chain 正在尝试在实际节点上方查找...
  • 嗨 gnarf,如果我有三个 parentNodes,我应该如何调整 .closest() 里面的内容?
  • 这与parentNode.closest() 的数量无关...阅读文档...如果您正在寻找父母tr,请使用tr 如果您正在寻找最亲近的父母&lt;div class='test'&gt; 使用.closest('div.test')
【解决方案2】:

你可以使用:

control.hide();

【讨论】:

    【解决方案3】:

    您的代码可能没有运行,因为名为“document”的元素不存在。

    改变: $("document").ready(function ($) {

    到:

    $(document).ready(function(){

    【讨论】:

    • 嗨,当我使用 getelementbyid 之前它可以工作,但为了使其更易于维护(用于在多个位置部署站点)我想通过标题而不是 id 或名称获取元素,因为 sharepoint不断改变它们。
    • 如果 sharepoint 正在为名称添加 GUID 前缀或后缀,那么您仍然可以使用该名称作为选择器。如果 GUID 是前缀,使用 $('select[name^=field_name]') 如果 GUID 是后缀,使用 $('select[name$=field_name]')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多