我在从数据库呈现的页面中有多个链接。所有这些我给了相同的ID并创建了一个从该id获取的JQuery单击函数。我试图运行一个简单的测试呼叫警报,但它不起作用。这不是假设工作吗?有更好的方法吗?
$("#lkResumeIt").click(function () {
alert("resume it");
});
<a id='lkResumeIt' href='#' contentID='1'>Item 1</a>
<a id='lkResumeIt' href='#' contentID='18'>Item 2</a>
<a id='lkResumeIt' href='#' contentID='22'>Item 3</a>
...
使用类选择器的下面的代码在元素是静态时工作得很好,但是当它们是动态的时候它们不会。请参阅下面的实际代码:
<script language="javascript">
$("#divContent").on('click', 'a.linky', function (event) {
alert("resume it");
});
function RunIt() {
$("#divContent").html("");
var jsongo = '';
$.ajax({
type: 'POST',
url: '/Controller/FollowingPaused/',
data: jsongo,
success: function (msg) {
for (i = 0; i < msg.length; i++) {
var htmlCode = "<a href='/Controller/Details/" + msg[i].ID + "' style = 'float: left;'><img class='packageImage' border='0' src='" + msg[i].Size0Path + "' /></a>";
htmlCode += "<span style='float: left;margin: 5px 0px 0px 10px;'>" + "<b>" + msg[i].TheName + "</b><br>";
if (msg[i].IsPaused == true) {
//htmlCode += "<a href='/Controller/Resume/" + msg[i].ID + "'>Resume</a>";
htmlCode += "<a href='#bar' class=linky contentID='" + msg[i].ID + "'>Resume</a>";
} else {
//htmlCode += "<a href='/Controller/Pause/" + msg[i].ID + "'>Pause</a>";
htmlCode += "<a href='#bar' class=linky contentID='" + msg[i].ID + "'>Pause</a>";
}
htmlCode += "</span>";
htmlCode += "<div class='clear'></div>";
$("#divContent").append(htmlCode);
}
}
});
}
RunIt()
</script>
<div style="display: table-row;">
<div id="divContent" style="display: table-cell; line-height: 1.5;">
</div>
</div>
答案 0 :(得分:11)
无法复制ID。如果你想为jQuery添加一个钩子,可以使用class
,它可以复制。
示例:
<强> HTML:强>
<a href="#bar" class="linky">Foo</a>
<强> JavaScript的:强>
$("a.linky").on('click', function (event) {
alert("resume it");
});
对于动态创建的元素:
$("#your-static-wrapper-element").on('click', 'a.linky', function (event) {
alert("resume it");
});
答案 1 :(得分:4)
您不能两次使用相同的ID,因为:
您的代码不会受到W3C的限制,这意味着您可能会对浏览器的网站兼容性感到头痛。它可以在一个浏览器中正常工作,而在其他浏览器中也可以。
您可以使用
<div class="main"></div>
<div class="main"></div>
$(".main").click(function(){
$(this).something..
})