我有一个关于jQuery的问题。我真的很喜欢jQuery,甚至是javascript,所以请耐心等待。
我在我的应用程序中的某些div上使用jQuery UI draggable。问题是,jQuery .on('click')似乎不适用于这些div。我确实尝试使用.click(),它确实有效。但是,div将动态创建,并且基于我所学到的,当我们想要使用动态创建的元素时,最好使用.on()。以下是我的HTML代码段:
<div class="book-page">
<div class="draggable-text">
<p>First text</p>
</div>
<div class="draggable-text">
<p>Second text</p>
</div>
</div>
这是jQuery片段:
$('div.draggable-text').draggable({
cursor: 'move',
delay: 200,
containment: 'parent'
}).resizable().selectable();
// This one doesn't work
$('div.book-page').on('click', 'div.book-page > div.draggable-text', function () {
alert('clicked!');
// some more coding here...
});
// This one works
/*$('div.book-page > div.draggable-text').click(function () {
alert('clicked!');
// some more coding here...
});*/
最后,我创建了a link to a jsfiddle。我真的很感激任何帮助。
谢谢!抱歉英语不好。
答案 0 :(得分:3)
您的第二个看起来有一些语法错误。
试试这个:
$('div.draggable-text').on('click', function () {
alert('clicked!');
// some more coding here...
});
阅读jQuery'on'事件的语法,以更好地理解参数的内容。 http://api.jquery.com/on/
干杯!
答案 1 :(得分:2)
试试这个:
$('div.draggable-text').click(function(e){
e.preventDefault();
alert('test');
});
答案 2 :(得分:0)
Jquery语法不正确请尝试:
$('div.draggable-text').on('click', function () {
alert('clicked......');
// some coding here...
});
答案 3 :(得分:0)
如果你想让bind click事件动态创建draggable元素,你的第一个想法几乎是正确的。
以下是固定代码:http://jsfiddle.net/G75qs/3/
$('.draggable-text').draggable({
cursor: 'move',
delay: 200,
containment: 'parent'
}).resizable().selectable();
//Bind click event for all element with class .draggable-text including
//elements dynamically created
$('.book-page').on('click', '.draggable-text', function () {
alert('clicked!');
// some more coding here...
});
答案 4 :(得分:-2)
对于动态创建的Div,最好将.live
用于事件。
$('div.draggable-text').die('click').live('click', function () {
alert('clicked......');