为什么jQuery什么都不做点击?

时间:2014-03-12 15:53:41

标签: javascript php jquery html ajax

今天我有一个非常奇怪的问题。我正在使用jQuery,Ajax和PHP构建一个庞大的应用程序。

基本上我在页面加载后用PHP加载div的内容。

<div id="samplediv">
    <a href="#" id="click1">Test1</a>
    <a href="#" id="click2">Test2</a>
    <a href="#" id="click3">Test3</a>
</div>

当有人点击这些时,会出现警报,如下所示:

$("#click1").on("click", function(){
    alert(1);
});

但是,如果客户点击

<a href="#" id="click_here">Click</a>

jQuery函数的触发如下:

$("#click_here").on("click", function(){
    fillDiv();
});

fillDiv()函数基本上是调用和ajax函数并用结果填充div,PHP页面返回。

这基本上与顶部div完全相同。 Php返回以下内容:

        <a href="#" id="click1">Test1</a>
        <a href="#" id="click2">Test2</a>
        <a href="#" id="click3">Test3</a>

fillDiv()函数将其放入samplediv。我检查了2结果的HTML是完全相同的!

问题:

当项目从Ajax函数加载回来时,与你完全相同的html,如果我点击任何Test1,Test2,Test3链接,我实际上没有回来。没有警报,没有。甚至没有错误信息。

可能是什么问题,我没有遇到过?

6 个答案:

答案 0 :(得分:3)

您希望将.on()方法更改为延迟选择器,因为您正在刷新元素。类似的东西:

$("body").on("click", "#click1", function(){
    alert(1);
});

答案 1 :(得分:1)

.live()实际上已被弃用。

试试这个:

$(document).on("click", '#click1', function(){
    alert(1);
});

答案 2 :(得分:0)

我认为(使用我的jQuery知识)可能是因为DOM没有再次加载。这样jQuery doensn就知道有新元素要遵循。

除此之外,您可能希望使用.click事件处理程序而不是.on

答案 3 :(得分:0)

问题是你绑定渲染id为“#click1”的元素进行点击,这个元素还不存在,因为它将是一个动态插入的AJAX,这个解决方案可以工作时&lt; =带有live()的JQuery 1.7。

试试这个:

$(document.body).on('click', '#click1' ,function(){ 
// Your logic here
}

$(document.body).on('click', '#click2' ,function(){ 
// Your logic here
}

$(document.body).on('click', '#click3' ,function(){ 
// Your logic here
}

答案 4 :(得分:0)

改变这个:

$("#click1").on("click", function(){
    alert(1);
});

为:

$(document).on("click", "#click1", function(e){
    e.preventDefault();
    e.stopPropagation();
    alert(1);
});

答案 5 :(得分:0)

更好的解决方案是使用.on,但将其附加到未被AJAX调用修改的div(或主体)。

<div id="samplediv">
<a href="#" id="click1" class="clickable">Test1</a>
<a href="#" id="click2" class="clickable">Test2</a>
<a href="#" id="click3" class="clickable">Test3</a>
</div>


$("#samplediv").on("click", ".clickable", function() {
  alert(1);
}

在这里查看示例(在这种情况下.on附加到正文) http://jsfiddle.net/rahul71/3vDvN/