我需要隐藏一些元素,具体取决于它们的标题值(它是一个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>
答案 0 :(得分:2)
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()
父母。 (I.E a <tr>
),也许只使用.hide()
control.closest('tr').hide();
就选择器而言,$("select[title='Something']")
会查找<select title='something'>
,这可能不是您想要的......
答案 1 :(得分:0)
你可以使用:
control.hide();
答案 2 :(得分:0)
您的代码可能没有运行,因为名为“document”的元素不存在。
变化:
$("document").ready(function ($) {
为:
$(document).ready(function(){