14

我有一个<ul>动态生成元素的<li>元素,只是想运行一个onclick事件

<ul id="results">
    <li class="device_result searchterm" data-url="apple-iphone-5s">
        <a href="#"> Apple iPhone 5s </a>
    </li>
    <li class="device_result searchterm" data-url="apple-iphone-5c">
        <a href="#"> Apple iPhone 5s </a>
    </li>
</ul>

我在一个$(document).ready块中有以下 jQuery,但它似乎不起作用 - 任何想法我做错了什么?

$("li .searchterm").click(function() {  
    console.log("testing");
});
4

6 回答 6

19

如果您添加动态,请单击列表但选择项目:

$("#results").on("click", ".searchterm", function(event){
    console.log('clicked');
});

试试小提琴:http: //jsfiddle.net/emPKS/

于 2013-09-30T09:59:49.807 回答
14

删除选择器中的空格

  $("li.searchterm").click(function() {    
   console.log('testing');
});

并且您还可以使用.on将特定事件附加到匹配的元素

  $("li.searchterm").on("click",function() {    
   console.log('testing');
});

Js小提琴

于 2013-09-30T09:57:54.773 回答
4

使用.on()

由于您的内容是动态添加的,因此无法直接访问,因此您必须使用事件委托。

$('#results').on('click','li.searchterm',function() {    
    console.log('testing');
});
于 2013-09-30T09:59:08.943 回答
2

要么做

$( "li .searchterm" ).on('click', function() {    
   console.log('testing');
});

或者

<li class="device_result searchterm" data-url="apple-iphone-5s" onclick="clickFunc(1)">
   <a href="#">Apple iPhone 5s</a>
</li>
<li class="device_result searchterm" data-url="apple-iphone-5c" onclick="clickFunc(2)">
   <a href="#">Apple iPhone 5s</a>
</li>

和 Javascrip

function clickFunc(id) {
   console.log('Do something with ' + id);
}
于 2013-09-30T10:01:32.063 回答
1
$( "li.searchterm" ).on('click',function() {    
   console.log('testing');
});
于 2013-09-30T09:59:27.543 回答
1

您可以在不将 id 分配给 ul 的情况下执行此操作

$('ul').on('click','li.searchterm',function(){
//do your stuffhere;
});
于 2017-10-06T12:28:03.823 回答