通常我会这样放JavaScript:
<head>
<title>Title goes here</title>
<script>
some JavaScript here
</script>
</head>
<body>
some codes here
</body>但现在我有一个情况,JavaScript代码必须生成,并且与HTML文件上的LI标签的数量相等:
$('#manage-1').click(function(e) {
$(this).next(".manage-content-wrap").find(".manage-content").load("test-manage-1.php");
e.preventDefault();
});
$('#manage-2').click(function(e) {
$(this).next(".manage-content-wrap").find(".manage-content").load("test-manage-2.php");
e.preventDefault();
});我有一个想法是在PHP中通过修改# JavaScript -1来创建管理,变量如下:#manage-$i和任何其他动态部分。
但是,有没有可能像这样把标签放在里面:
<head>
<title>Title goes here</title>
<script>
some JavaScript here
<?php
PHP code inside script tags
?>
</script>
</head>发布于 2012-10-18 12:45:32
好的,我想我们可以通过稍微改进一下你的技术来解决这个问题。
你真的不需要多个.click处理程序,你需要一个更好的选择器策略。
假设你用这个来包围你的LI:
<ul class="managers">
<li><a href="" id="manage-1">Link Text 1</a></li>
<li><a href="" id="manage-2">Link Text 2</a></li>
<li><a href="" id="manage-3">Link Text 3</a></li>
<li><a href="" id="manage-4">Link Text 4</a></li>
</ul>现在,您实际上只需要一个.click处理程序:
$(".managers li a").click(function(evt) {
evt.preventDefault();
var mID = $(this).attr("id");
$(this).next(".manage-content-wrap").find(".manage-content").load("test-" + mID + ".php");
});请注意,您可能必须以这种方式修改如何找到合适的.manage-content元素,但您应该明白这一点。
同样,通过这种方式,您不会不可避免地将表示端的交互与数据捆绑在一起,并且您的代码也会变得有点枯竭。几乎任何时候,当您发现自己需要输出自动生成的代码时,除了一些细节之外,这些代码完全相同,这是一个简化方法的机会。
希望这能有所帮助!
发布于 2012-10-18 12:39:50
使用一个类!
没有必要为每个元素添加一行代码。为每个要启用单击事件的元素添加一个公共类。您可以将其用作选择器。它使代码变得更小更快。
HTML:
<a class="manage" data-file="test-manage-1.php">foo</a>JavaScript:
$(document).on('click', ".manage", function(e) {
var elem = $(this);
elem.next(".manage-content-wrap").find(".manage-content").load(elem.data("file"));
e.preventDefault();
});发布于 2012-10-18 12:51:23
如果你想把你的JavaScript代码放在php标签中,那么你只需要输入下面的样式即可。
<head>
<title>Title goes here</title>
<?php echo"<script>
some JavaScript here
PHP code inside script tags
</script>";
?>
</head>https://stackoverflow.com/questions/12947180
复制相似问题