我的代码和我的问题是:
<script type="text/javascript">
$(document).ready(function() {
// this variable is used to set the dynamic elements
tagFlag = '';
$("#a1").click(function(event) {
event.preventDefault();
tagFlag = 'me'; // setting the element which I want to trigger later
});
$('#'+tagFlag).click(function(e) {
// do sthing here
});
});
</script>
</head>
<body>
<a href="">make the element</a>
<p id="me">some words here</p>
</body>
</html>
但是。当我设置tagFlag,然后单击“p”时,没有任何事情发生.BTW。当tagFlag被设置为nothing时,会出现错误。所以我可以得到我想要的东西吗?
非常感谢!!
答案 0 :(得分:0)
也许您应该查看将事件分配给所有现有和未来元素的jQuery live()
方法。
答案 1 :(得分:0)
ID
“a1”没有元素。如果您想要第一个锚元素,请使用
$.("a:eq(0)")
而不是。如果不是这样,请报告。
答案 2 :(得分:0)
使用jquery对象并将单击的元素添加到其中:
$(document).ready(function() {
$tagFlag = $("");
$("#a1").click(function(event) {
event.preventDefault();
$tagFlag.add($(this));
});
$tagFlag.click(function(e) {
// do sthing here
});
});
答案 3 :(得分:0)
您可以将.click()
处理程序附加到document
并检查点击的目标是否是您关注的元素,类似于.live()
内部的行为,如下所示:
$(function() {
var tagFlag = '';
$("#a1").click(function(event) {
event.preventDefault();
tagFlag = 'me';
});
$(document).click(function(e) {
if(tagFlag && //is it even set?
(e.target.id == tagFlag || $(e.target).closest('#'+tagFlag).length)) {
//do work here
}
});
});
You can give it a try here,对标记的唯一更改是添加子元素(显示单击冒泡/处理工作)并为a1
ID 认为提供锚点>你打算让它出现在问题中。
或者,如果您知道可以单击的元素集,请为它们提供一个类并将处理程序绑定到它们,像上面一样检查ID ...或取消绑定类并每次重新绑定到特定ID,有几种方法可以解决这个问题:)