我有一些简单的JavaScript来实现样式更改:
sel = document.getElementById('my_id');
sel.className = sel.className.replace(/item-[1-9]-selected/,'item-1-selected');
return false;
Run Code Online (Sandbox Code Playgroud)
这适用于最新版本的FF,Opera和IE,但在最新版本的Chrome和Safari上失败.
它会影响两个后代,这些后代恰好是兄弟姐妹.第一个兄弟更新,但第二个没有.第二个元素的子元素也具有焦点,并包含<a>标记,该标记在onclick属性中包含上述代码.
在Chrome"开发人员工具"窗口中,如果我轻推(例如取消选中并检查)任何元素的任何属性,则第二个兄弟会更新为正确的样式.
是否有一种解决方法可以轻松地以编程方式"轻推"WebKit做正确的事情?
我在我的 asp.net mvc4 站点上实现了一个自动完成搜索框。我目前能够让框返回结果,当我在搜索框中键入时更新。我还根据结果“类型 ID”动态生成“类别”按钮,并将它们插入到自动完成生成结果时出现的标题中。
我想介绍这样的功能:当用户单击类别按钮时,现有的自动完成结果会得到进一步过滤,因此只显示该“类型 ID”的结果。之后,如果用户想再次查看与搜索字符串匹配的所有结果,可以单击“全部”按钮。
要查看此版本的工作版本,请查看 Discogs.com 上的搜索框。我还在下面粘贴了这个小部件的屏幕截图,以供参考。
我该如何实施?我找不到任何关于此的 stackoverflow 帖子,因为我不知道如何表达我的问题。
我的代码如下。在其中,我已经有一个功能正常的自动完成功能,并且我有动态生成类别按钮的部分。现在我需要帮助的是找到一种设计模式,以便在我单击动态生成的类别按钮时进一步过滤自动完成结果。
@model myproject.Models.Search_Term
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// autopopulate input boxes
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//detect the browser resize and close the Autocomplete box when that event is triggered
$(window).resize(function() {
$("#searchBox").autocomplete("close");
});
//helper method for autopopulate.
///sf/ask/170517511/
//this helps in creating a autocomplete menu with custom HTML formatting
function monkeyPatchAutocomplete() {
$.ui.autocomplete.prototype._renderItem = function( ul, item) {
var inner_html = '<img src="' + item.imgPathSmall + '">';
return $("<li>") …Run Code Online (Sandbox Code Playgroud)