0

我正在尝试通过单击链接来填写输入字段。此链接的 href 应确定将在此输入字段中填写的内容。

$(".search_item").click(function(){
    var selectedChamp=$(this).attr('href').split('=')[1];
    $('.textfield').val( selectedChamp );
       return false;
});

我使用了以下 JSfiddle: http: //jsfiddle.net/charlietfl/5u3BZ/ 但我无法让它为自己工作。

链接是使用 JSRender 生成的。

在此页面上:http: //lorebook.net/lore/你可以看到我想要实现的目标。在顶部的栏中填写一些内容(只需输入字母“A”就会显示一些结果),那里的链接应该在输入字段中输入一些内容。

奇怪的是,在这个页面的底部有一些确实有效的链接。它们使用完全相同的代码,但由于某种原因它们可以工作,而其他链接则不能。

帮助将不胜感激。

4

2 回答 2

1

您应该使用.preventDefault(); 以便在单击时触发替代事件。

$(".search_item").click(function(e){
    e.preventDefault();
    var selectedChamp=$(this).attr('href').split('=')[1];
    $('.textfield').val( selectedChamp );
});

我在您的页面上对其进行了测试,应用了这个小改动后它对我有用。

编辑:我收回这个......因为问题不在于脚本本身......如果我将它放到控制台中它已经做了正确的事情......这意味着在脚本启动时它不会找到它需要的 DOM 元素。

  • 如果我在搜索之前启动脚本......它不起作用......
  • 如果我搜索然后将脚本粘贴到控制台中......它会找到.search_item元素并按预期工作。

所以我不确定你上面的文本字段脚本当前位于哪里......但你应该只在搜索结果元素已经加载并且可以在 DOM 中找到时调用它。

于 2013-04-20T16:02:37.760 回答
1

我认为这应该有效:

pr = "";
setInterval(function(){
  if(document.location.hash != pr){

    $('.textfield').val( document.location.hash.split('=')[1] );

    // Do what you want

    pr = document.location.hash;
  }
}, 50);
于 2013-04-20T16:38:24.300 回答