我有一个网站,我需要检查所有href-links,如果它们在网站上的自定义词典中。如果它们存在,则应将a-tag中的title属性设置为从服务器获取的文本。我根据这个网站的其他猜测把这个放在一起(例如,没有经过测试):
// How to only activate "a href" links?
jQuery('a').mouseover(function() {
// should be what is between <a href="">this text</a>. Is this correct?
var dictionaryWord = jQuery(this).text();
// do a server site call to get description for the word given in the var above
jQuery.get("/getDescriptionFromDictionaryWord.aspx", { word: dictionaryWord },
function(data){
// set title tag for the a-tag actual a-tag
// will "this" refer to the a-tag with mouseover?
jQuery(this).attr("title", data);
});
});
以上可能存在错误。我刚从StackOverflow上的不同答案中创建了它。有没有更好的方法从服务器获得响应而不是上述?
如果它有效,我只需要一个很好的方法来显示鼠标悬停时的标题标签。我已经看到了一些包装,所以应该很容易。
BR。安德斯
更新(基于以下答案)
// all "a href" do this for the first mouseover "one.()"
jQuery('a[href]').one('mouseover',(function() {
// get a reference to the clicked + get dictionary word
var anchor = jQuery(this),
dictionaryWord = anchor.text();
// do a server site call to get description for the word given in the var above
jQuery.get("/getDescriptionFromDictionaryWord.aspx", { word: dictionaryWord },
function(data){
// set title tag for the a-tag actual a-tag
// will "this" refer to the a-tag with mouseover?
anchor.attr("title", data);
});
}));
答案 0 :(得分:0)
一些改进:
//Match only a with the href attribute
jQuery('a[href]').mouseover(function() {
var dictionaryWord = jQuery(this).text(),
//cache the context and use it in the ajax function
el=jQuery(this);
jQuery.get("/getDescriptionFromDictionaryWord.aspx", { word: dictionaryWord },
function(data){
//You can't use the $(this) use the cached context
el.attr("title", data);
});
});
这应该有用。
答案 1 :(得分:0)
此代码应该有效,但在我看来,最好在没有javascript的情况下加载标题,因为它可以减少服务器上的负载。除非你想用HTML显示一些描述。为此目的,attr标签不是一种选择。
答案 2 :(得分:0)
如果getDescriptionFromDictionaryWord.aspx
类似于:
Response.Clear();
Response.Write("description for word");
Response.End();
即。整个响应是您想要显示的值。
更好的方法是创建一个“Web服务(asmx)”类型的新文件,称之为“Dictionary.asmx”。在创建的CS / VB文件中,确保取消注释已注释掉的ScriptService
属性,然后添加如下所示的方法:
[WebMethod]
public string GetDescription(string word) {
// internal logic for dictionary lookup
return description;
}
这样,你可以提交这样的请求:
$('a[href]').mouseover(function() {
// the above selector finds all anchors with 'href' attribute
var anchor = $(this); // get a reference to the clicked item
var dictionaryWord = anchor.text();
jQuery.get("/Dictionary.asmx/GetDescription", { word: dictionaryWord }, function(data){
anchor.attr("title", data.d); // .NET will wrap the response in a 'd' property
});
});
答案 3 :(得分:0)
我或许建议也使用$('a[href]').one('mouseover',function()...
而不是$('a[href]').mouseover(function()...
,这样每个链接只会使用一次,而不是加班链接鼠标。