javascript - JQuery 单击除某些 div 之外的任何地方以及动态添加的 html 的问题

标签 javascript jquery jquery-click-event

我希望此网页在您单击其中一个元素时突出显示某些元素,但如果您单击页面上的其他任何位置,则所有这些元素都不应再突出显示。

我通过以下方式完成了这项任务,除了一件事(如下所述)外,它工作得很好:

$(document).click(function() {
    // Do stuff when clicking anywhere but on elements of class suggestion_box
    $(".suggestion_box").css('background-color', '#FFFFFF');
});
$(".suggestion_box").click(function() { 
    // means you clicked on an object belonging to class suggestion_box
    return false;
});

// the code for handling onclicks for each element
function clickSuggestion() {
    // remove all highlighting
    $(".suggestion_box").css('background-color', '#FFFFFF');
    // then highlight only a specific item
    $("div[name=" + arguments[0] + "]").css('background-color', '#CCFFCC');     
}

这种强制突出显示元素的方法工作正常,直到我向页面添加更多 html 而无需加载新页面。这是由 .append() 和 .prepend() 完成的

我从调试中怀疑的是页面没有“意识到”动态添加到页面的新元素。尽管新的、动态添加的元素具有适当的类名/ID/名称/onclicks 等,但它们永远不会像其他元素一样突出显示(它们在整个过程中继续正常工作)。

我想知道为什么我的方法不适用于动态添加的内容的可能原因是页面无法识别页面加载期间不存在的元素。如果这是可能的,那么有没有办法在没有页面加载的情况下协调这一点?

如果这条推理线是错误的,那么我上面的代码可能不足以显示我的网页有什么问题。但我真的只是对这种思路是否可行感兴趣。

最佳答案

使用.live “为匹配当前选择器的所有元素附加一个处理程序,现在和将来。示例:

$(".suggestion_box").live("click", function() { 
    // means you clicked on an object belonging to className
    return false;
});

另见 .delegate ,这很相似。

关于javascript - JQuery 单击除某些 div 之外的任何地方以及动态添加的 html 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4543342/

相关文章:

javascript - 单击其父 div 时,隐藏的输入类型 ='file' 不会触发

javascript - 单击 JavaScript 时删除按钮

php - 在 Javascript 中模仿 $_GET

带有选择长时间运行脚本的javascript动态内容

javascript - 如何使用 onclick 防止默认 addClass 函数并在给定日期返回该函数

javascript - 我的 .click() 事件有什么问题?

javascript - 动画图像在长时间的 Javascript 方法调用期间不动

javascript - 尝试使用 Request NPM 将数据从 NodeJS 发布到本地主机(Loopback Swagger API)

jquery.data() : is it portable to all the browser?

javascript - 搜索过滤器列表,无论词序如何,搜索严格性问题