如何在列表上使用onclick事件(jqueryui-selectable)?

时间:2013-12-12 17:05:49

标签: javascript jquery jquery-ui jquery-ui-selectable

我用jqueryui-selectable列表创建了一个简单的脚本。我生成一个可选列表,并为每个列表分配一个onclick函数。当我点击列表时,似乎没有触发onclick事件。有什么想法解决这个问题吗?

谢谢,

我的剧本:

$(document).ready(function() {
$("#myButton").button();
});

function generate(){
var $content=$("<ol id='selectable'>");
for (a=0;a<3;a++)
{
$content.append("<li class='ui-widget-content'  onclick='myFunction()'>item"+a+"</li>");
}
$content.append("</ol>");
$("#myList").append($content);
$('#selectable').selectable();
}

function myFunction()
{
alert("Hello World!");
}

我的风格:

#feedback { font-size: 1.4em; }
#selectable .ui-selecting { background: #FECA40; }
#selectable  .ui-selected { background: #F39814; color: white; }
#selectable  { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#selectable  li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }

我的HTML:

<div id='myList'/>
<button id="myButton" onClick="generate()">Generate List</button>

3 个答案:

答案 0 :(得分:1)

由于元素是动态创建的,因此需要委派它。您可以通过以下方式在jQuery中执行此操作:

$(document).on("click",".ui-widget-content", myFunction()); 

(或者只是使用匿名函数)

$(document).on("click",".ui-widget-content", function() {
    alert("Hello World!");
}); 

答案 1 :(得分:1)

您应该使用selecting事件。 见这里的例子 http://jsfiddle.net/Pa4NK/

答案 2 :(得分:0)

可选择添加辅助div以显示套索。但是辅助div位于鼠标下方,这可以防止点击击中底层元素。即使助手宽度和高度设置为0,这似乎也会导致问题。

更改距离选项将解决问题 http://api.jqueryui.com/selectable/#option-distance

$( "#selectable" ).selectable({
 distance: 1
});

&安培;然后实现selectable()函数的功能

    $('.ui-widget-content').on("click", function () {
        $('.ui-widget-content').removeClass('ui-selected');
        $(this).addClass('ui-selected');
    });