无法将 jQuery 嵌入到 @Html.ActionLink()

Can't embed jQuery to @Html.ActionLink()

@Html.ActionLink 标签有一个小问题。我想在单击它时更改背景。但是没用。

<ul>
    <li>@Html.ActionLink("View Profile", "Profile", "User", null, new { id = "profile" })</li>
</ul>

和jQuery代码:

$("#profile").click(function () {
    document.getElementById("profile").style.background = "linear-gradient(#00ff66, #00ff99, #00ff66)";
});

但是我已经在 w3schools 上试过了,它已经成功了:

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

<a id="profile" href"">View profile</a>  

<script>
$("#profile").click(function() {
    document.getElementById("profile").style.background = "linear-gradient(#00ff66, #00ff99, #00ff66)";
});
</script>

</body>
</html>

你能帮帮我吗?

p/s: 这是我的子问题:

你能告诉我这两者有什么区别吗:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

<a id="profile" href"">View profile</a>

<script>
$("#profile").click(function() {
    document.getElementById("profile").style.background = "linear-gradient(#00ff66, #00ff99, #00ff66)";
});
</script>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

<script>
$("#profile").click(function() {
    document.getElementById("profile").style.background = "linear-gradient(#00ff66, #00ff99, #00ff66)";
});
</script>

<a id="profile" href"">View profile</a>

如果我将第 <a id="profile" href"">View profile</a> 行的位置更改为末尾,代码将无法运行。

为什么?

每当脚本执行时,它都会查找 ID = "profile" 的 dom,并且由于它尚未加载到页面上,因此事件不会被绑定。

您可以通过将代码包装在文档就绪事件中来解决此问题:

$(document).ready(function(){
    //add event here
});

或 jquery shorthand 表示法:

$(function(){
    //add event here
});

一旦您的 html 已加载,此处的任何代码都会触发。

另一个解决方法是将事件放在文档本身上,并使用 'on' 方法指定您正在寻找 #profile:

$(document).on('click', '#profile', function(){
    //do stuff
});

我认为你的问题是因为脚本开始执行时 DOM 元素没有完全加载。如果像这样包装脚本,您可以解决问题:

$(document).ready(function(){
    $("#profile").click(function () {
        document.getElementById("profile").style.background = "linear-gradient(#00ff66, #00ff99, #00ff66)";
    });
});

回答主要问题

这是因为您的代码是 运行 当您的页面元素未加载时。所以请将脚本放在底部或尝试以下脚本:

$(function () { //Since it's short and you are using jQuery. You may also use $(document).ready(function(){
    $("#profile").click(function () {
         document.getElementById("profile").style.background = "linear-gradient(#00ff66, #00ff99, #00ff66)";
    });
});

虽然您可以使用上面的代码并且它有效,但我建议您始终将 <script> 标记放在页面底部以加快页面加载时间。

无论如何你可以做任何这些。

您的子问题的答案:

因为javascript(Jquery)搜索指定id的dom时,如果没有加载就会报错,无法执行

希望它能解决您的两个问题。

如果是最佳答案请采纳

不断提问,不断学习。

谢谢...