【发布时间】:2014-04-10 16:05:35
【问题描述】:
我试图在打开 Magnific Popup 时发送带有 AJAX 请求的 data 对象。但是,$(this) 似乎没有在插件中正确翻译。
考虑这段代码:
<div class="my-div">
<a href="/path/to/file.php" data-name="John" data-location="Boston">Click here</a>
</div>
$('.my-div a').magnificPopup({
type: 'ajax',
ajax: {
settings: {
data: $(this).data()
}
}
});
数据对象未正确返回。但是,如果我用这个替换数据线:
data: { name: "John", location: "Boston" }
然后我可以在$_GET 中引用这些对象。
编辑:为了进一步说明$(this) 在magnificPopup 中无法正常工作,我将数据行更改为:
data: { href: $(this).attr('href') }
仍然没有返回任何内容。
我所做的一切似乎都指向$(this) 在插件中没有得到尊重。如何从原始锚标记中获取 data 对象并将它们传递给 AJAX 请求?
【问题讨论】:
-
我猜你必须提到 .data() 方法中的键。 api.jquery.com/data
-
不,一个简单的
.data()将返回所有data-*值作为一个JavaScript 对象。示例:jsfiddle.net/7nvgL -
是不是因为您传递的对象没有必需的参数名称。试试 data: { myObj: $(this).data() } 。这可能会传递名称为 myObj 的对象
标签: jquery ajax magnific-popup