我正在尝试获取链接点击的html值。 链接是用Ajax动态创建的,所以我不认为.bind会 我没有.live
的最新版本$('div#message').click(function() {
var valueSelected = $(this).html(); // picks up the whole id. I juust want single href!
alert(valueSelected);
return false;
});
<div id="message">
<br/>
<a class="doYouMean" href="#">location A</a>
<br/>
<a class="doYouMean" href="#">location B</a>
<br/>
<a class="doYouMean" href="#">location C</a>
<br/>
<a class="doYouMean" href="#">location D</a>
<br/>
<a class="doYouMean" href="#">location E</a>
<br/>
</div>
答案 0 :(得分:16)
这是一种尚未提及的替代方法:
如果您使用的是 jQuery v1.7 + ,则可以使用.on()
方法将事件侦听器绑定到当前HTML以及将来添加的HTML: / p>
$('#message a').on('click', function(){
alert('link clicked!');
});
如果您使用的是旧版本的jQuery,建议您改用.delegate()
方法:
$('#message').delegate('a', 'click', function(){
alert('link clicked!');
});
总结:
$(elements).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(elements).on(events, selector, data, handler); // jQuery 1.7+
答案 1 :(得分:3)
将处理程序应用于AJAX加载回调中的链接。
$('div#message').load( myUrl, function() {
$('div#message a').click(function() {
var valueSelected = $(this).html();
alert(valueSelected);
return false;
});
});
答案 2 :(得分:0)
您有2个选项 -
答案 3 :(得分:0)
如果可以提供帮助,您应该使用最新版本。
如果是使用AJAX添加的“.doYouMean”元素,并且#message始终存在,请尝试:
$('#message').bind('click', function (event) {
var target = event.currentTarget;
if ($('.doYouMean').filter(target)) {
// target is the .doYouMean that was clicked: Handle here
};
});
答案 4 :(得分:0)
其他解决方案是为click重新初始化创建一个函数,因为你可能有其他情况,比如我有:),所以逻辑可能会跟随:
$(document).ready(function() {
initsomething();
});
function initsomething(){
.......
$('div#message').click(function() {
var valueSelected = $(this).html(); // picks up the whole id. I juust want single href!
alert(valueSelected);
return false;
});
.......
}
关于ajax成功运行initsomething():)
答案 5 :(得分:0)
也许是一个迟到且重复的答案,但这可能是一个迟到但这是我在需要ajax时所做的。
$(document).ready(function () {
$(document.body).on('click', '.Selector_S', function () { function_F(event, this) })
}
function function_F(event, d){
...do sth here...
}
你根本不需要重新启动事件监听器或在ajax函数中写任何东西。