我有一个脚本需要设置两个json数据调用URL之一,具体取决于单击哪个元素来调用查询。
如何编写url:属性以使其由单击的元素确定?
在我的脑海中,我正在考虑创建一个隐藏的输入字段,并设置一个我可以读取/写入的标志,具体取决于所点击的链接。然后我可以将url:参数包装在if / then
中然而,我记得jQuery有一个我可以使用的each()方法。
有什么建议吗?
代码:
<div id='items'>
Label:
<a href='#' id='item1'>Item 1</a>
<a href='#' id='item2'>Item 2</a>
</div>
jQuery("#items").find("a").each.click(function(){
jQuery.ajax({contentType: "application/json; charset=utf-8",dataType: "json",
if(jQuery(this).id = '#item1')
{
url: "first url"
}
else
{
url: "second url"
}
});
答案 0 :(得分:1)
if(this.id == 'item1')
var url = "first url";
else
var url = "second url";
然后使用:
{ url: $url }
但至于链接,我建议:
$.ajax({
type: 'GET',
url: $(this).attr('href'),
success: function(data) {
...
},
});
喜欢:displaying a spinner when we make an ajax call and waiting for the response and blocking the page
答案 1 :(得分:1)
您可以使用条件运算符:
url: this.id == 'item1' ? "first" : "second",
答案 2 :(得分:1)
您可以使用属性:
<div id='items'>
Label:
<a href='#' id='item1' data-url="page1.html">Item 1</a>
<a href='#' id='item2' data-url="page2.html">Item 2</a>
</div>
然后使用jQuery data()函数检索它。
jQuery('#items a').click(function(){
jQuery.ajax({
contentType: "application/json; charset=utf-8",
dataType: "json",
url: $(this).data("url")
});
});
答案 3 :(得分:0)
由于你使用锚点,我建议给锚点正确的url然后让jQuery获取$(this).attr('href')。
答案 4 :(得分:0)
只需在运行时切换:
<a href="http://www.google.com/" class="link">Item 1</a>
<a href="http://www.bing.com/" class="link">Item 2</a>
然后你的脚本看起来像这样:
$('.link').each(function()
{
var currentHref = this.href;
// Unset the value so when people click on it, they dont leave the page
// jQuery 1.6
$(this).prop('href', '#');
// Other Versions
$(this).attr('href', '#');
$(this).click(function()
{
// Do Ajax Call. The URL of the link is contained within `currentHref` which is contained in this scope via closure.
});
});
这样,javascript只是在运行时重新排列链接中包含的数据。