1
这里是我的功能:如何清理jQuery函数并使其更灵活?
function DisplayGridElementsBasedOnCriteria(dataItem, propertyToEvaluate, shouldEqualvalue, selectorsToChange, hideSelectedElements, nameOfColumnContainingElements) {
if (propertyToEvaluate == shouldEqualvalue) {
var $row = $(dataItem.row);
if (nameOfColumnContainingElements == undefined) {
if (hideSelectedElements) {
$row.children("td").children(selectorsToChange).hide();
}else {
$row.children("td").children(selectorsToChange).show();
}
} else {
$.each($row.children("td"), function (index, column) {
var $column = $(column);
var $headerText = $column.closest('table').find('th').eq($column.index()).children(".t-link").text();
if ($headerText == nameOfColumnContainingElements) {
if (hideSelectedElements) {
$column.children(selectorsToChange).hide();
} else {
$column.children(selectorsToChange).show();
}
}
});
}
}
}
它以这样一种方式被使用:
<script type="text/javascript">
function onRowDataBound(e) {
DisplayGridElementsBasedOnCriteria(e, e.dataItem.Status, "Submitted", "a.t-grid-delete, a.t-grid-Edit", true, "Actions");
}
</script>
我不是在jQuery的/ JavaScript的非常好,它的工作方式我想要,但似乎有点复杂和臃肿。
任何人都可以提供一个更清洁的版本?
每这里的答案是清洁的版本:
function DisplayGridElementsBasedOnCriteria(dataItem, propertyToEvaluate, shouldEqualvalue, selectorsToChange, hideSelectedElements, nameOfColumnContainingElements) {
if (propertyToEvaluate === shouldEqualvalue) {
var $row = $(dataItem.row);
if (nameOfColumnContainingElements === undefined) {
$row.children("td").children(selectorsToChange).toggle(!hideSelectedElements);
}
else {
$row.children("td").each(function (index, column) {
var $column = $(column),
$headerText = $column.closest('table').find('th').eq($column.index()).children(".t-link").text();
if ($headerText === nameOfColumnContainingElements) {
$column.children(selectorsToChange).toggle(!hideSelectedElements);
}
});
}
}
}
什么意思是由链变量参考我的例子,没有看到在哪里应用它? – SventoryMang 2012-02-15 20:09:46
@DOTang:可以合并“var $ column”和“var $ headerText”。 – pimvdb 2012-02-15 20:10:39
谢谢,摆脱了第二部分,因为它是一个单独的问题,这是非常有帮助的! – SventoryMang 2012-02-15 20:18:02