之前我问过这个问题,但我认为我没有正确解释我想要完成的事情。
我的网站上有多个链接,我想在jquery ui模式对话框小部件中打开链接中的内容。
我正在尝试使用'this'来引用用户动态选择的链接。 我在这里做错了什么?
我正在使用的代码如下:
<a href="index.cs.asp?Process=comments&id=1" id="test">comment #1</a>
<a href="index.cs.asp?Process=comments&id=2" id="test">comment #2</a>
<a href="index.cs.asp?Process=comments&id=3" id="test">comment #3</a>
<div id="somediv"></div>
<script type="text/javascript">
$(document).ready(function() {
$("#somediv").load(this.getTrigger().attr("href")).dialog({
autoOpen: false,
width: 400,
modal: true
});
$("#test").click(function(){$( "#somediv" ).dialog( "open" );});
});
</script>
答案 0 :(得分:16)
一些更改:将ID更改为Class并使用IFrame。
<a href="http://wikipedia.com/" class="test">comment #1</a><br>
<a href="http://ebay.com/" class="test">comment #2</a><br>
<a href="http://ask.com/" class="test" >comment #3</a><br>
<div id="somediv" title="this is a dialog" style="display:none;">
<iframe id="thedialog" width="350" height="350"></iframe>
</div>
<script>
$(document).ready(function () {
$(".test").click(function () {
$("#thedialog").attr('src', $(this).attr("href"));
$("#somediv").dialog({
width: 400,
height: 450,
modal: true,
close: function () {
$("#thedialog").attr('src', "about:blank");
}
});
return false;
});
});
</script>
如果您想要引入HTML而不是IFrame,则必须使用Ajax(XMLHttpRequest),如下所示:http://jsfiddle.net/qp7NP/1/
答案 1 :(得分:0)
您不能拥有多个具有相同ID的元素。
将您的链接更改为class="test"
,然后将您的点击事件更改为$('.test').click()
。
此外,如果你仍然有问题,我记得我有一些类似的问题,因为JQUery Dialog如何与DOM表现出来。它会将#somediv从内容中删除,并将其附加到页面底部以显示该对话框。我解决了动态对话框加载问题,将其包装在另一个div中。
<div id="somediv-wrap">
<div id="somediv">
</div>
</div>
<script>
$(document).ready(function() {
$("#somediv-wrap").dialog({
autoOpen: false,
width: 400,
height:200,
modal: true
});
$(".test").click(function(event)
{
event.preventDefault();
var link = $(this).attr('href');
$("#somediv").load(link,function(){
$( "#somediv-wrap" ).dialog( "open" );
});
});
});
</script>