[asp.net-mvc]分离在 javascript 中从Razor调用函数

发布时间: 2016/10/7 1:33:23
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

发现隐藏的属性后只有作品与 html5 和最新的浏览器,我可能会找到另一种方式来隐藏内容基于条件语句。 我碰到一个问题在哪里在 javascript 函数看来不执行的在短它并不隐藏的第一段。

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function(){

   function DetachEmptyField(pattern) {
   $("#pattern").val(pattern);
   $(pattern).detach();
   }

});

</script>
</head>
<body>
<p id="hideMe">This is a paragraph, 1.</p>
<p>This is another paragraph, 2.</p>

<button>Remove paragraph 1</button>

@* Razor conditional statements to be added later here ... *@
<script type="text/javascript">DetachEmptyField("#hideMe");</script>


</body>
</html>

解决方法 1:

DetachEmptyField函数在全局范围中不可用 (它生活里面你 ready 回调),因此您的电话将不起作用。如果你真的想要这样称呼它

<script type="text/javascript">DetachEmptyField("#hideMe");</script>

你将不得不宣布在全球范围内 (会意识到这是不好的习惯)

// global function
function DetachEmptyField(pattern) {
$("#pattern").val(pattern);
$(pattern).detach();
}

$(document).ready(function(){

});

无论如何,如果你只需要隐藏元素您可以使用 css "display: none" 或如果你可以在服务器端检查,是否该元素应该是在网页上显示你根本可以不包括这一段在响应中。

@if ( /*some condition that needs to be true in order to display the <p> */ ) {
  @: <p id="hideMe">This is a paragraph, 1.</p>
}
赞助商