jQuery,函数不是从加载了“.innerHTML()”的HTML组件调用的

时间:2014-10-18 22:18:10

标签: javascript jquery html class

我有一些正在运行的jQuery函数,如:

$(".selector").bind("change blur",function()
{
        $(this).css({"background-size": "22px 22px"});
        $(this).siblings('span').css({"display": "block"});
        $(this).css({"border": 'solid 1px #E85131'});
        $(this).css({"color":'#bbb'});
});

当我加载文档时,每个“selector”类都正在调用该函数。

有时我用

更新div
function test()
{
    document.getElementById("feed").innerHTML = "";
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            document.getElementById("feed").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("POST", "load_feed.php, false);
    xmlhttp.send();
}

加载了一些带有“selector”类的新div,但它们不会在模糊或更改时调用jQuery代码。

已加载的那个仍然有效。

你们有什么想法吗?

2 个答案:

答案 0 :(得分:3)

因为bind()的工作原理,您需要使用on()。它允许委托事件绑定,而bind()仅适用于调用时出现的事件。所以这就是你需要做的事情:

$(document).on("change blur", ".selector", function(){
   ...
}

答案 1 :(得分:-1)

像Shomz说的那样,你需要使用'on'语句而不是'bind'。您需要对修改DOM后调用的每个函数执行此操作,因此如果您添加了一些内容,那么如果它们是正确的,jquery也不会找到它们。

$(".selector").bind("change blur",function()
{
        $(this).css({"background-size": "22px 22px"});
        $(this).siblings('span').css({"display": "block"});
        $(this).css({"border": 'solid 1px #E85131'});
        $(this).css({"color":'#bbb'});
});

需要成为

$(document).on(".selector", "change blur", function()
{
        $(this).css({"background-size": "22px 22px"});
        $(this).siblings('span').css({"display": "block"});
        $(this).css({"border": 'solid 1px #E85131'});
        $(this).css({"color":'#bbb'});
});