是否可以使用jQuery选择器来访问没有插件的Struts2元素?

时间:2012-05-07 20:48:22

标签: jquery jsp struts2

我是Struts2的新手,但我一直遇到jQuery选择器无法访问我们在jsps中定义的任何Struts2标记的问题。

我假设他们没有很多自定义代码或插件就没有集成,但是我还没有找到任何关于它的明确命令。当我进入strut2-jQuery plugin页面时,他们提到最好在他们的常见问题中使用插件,但不是必需的。

我在这里遗漏了什么吗?如果我有一个元素的struts2标记,并尝试使用jQuery选择它,它不会看起来工作。我说的是基本元素,比如

$('form').find(':input').change(function() { ...  //or

$('#testbutton').attr('disabled', true);  //or

 $('#formName').change(function() { 
          alert("Found form!"); 
     });

因此,当我查看视图源代码时,我会看到从标记生成的常规html代码,如果它来自struts2标记而不是具有相同jQuery的常规html标记,则无法使用选择器访问这些特定元素选择器代码。

另外一项,我正在使用类似的东西在jsp页面上引用jQuery:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>

1 个答案:

答案 0 :(得分:2)

如何生成HTML与客户端(浏览器)无关,客户端不知道生成的DOM之外的任何内容。

如果有一个ID,或者它是一个输入,jQuery会找到它 - 我已经使用普通的jQuery(和Prototype)与S2应用程序多年没有问题。

还有别的错误。


编辑以显示JSP,呈现的HTML和控制台输出。

JSP:

<s:form action="simpleForm">
  <s:textfield name="fname"/>
  <s:submit value="Go!"/>
</s:form>

呈现HTML(假设默认为"xhtml"主题):

<form id="simpleForm" name="simpleForm" action="/simpleForm.action" method="post">
  <table class="wwFormTable">
    <tr>
      <td class="tdLabel"></td>
      <td><input type="text" name="fname" value="" id="simpleForm_fname"/></td>
    </tr>

    <tr>
      <td colspan="2"><div align="right"><input type="submit" id="simpleForm_0" value="Go!"/>
      </div></td>
    </tr>
  </table></form>

某些控制台输出:

> $("form")
[<form id=​"simpleForm" name=​"simpleForm" action=​"/​simpleForm.action" method=​"post">​…​</form>​]
> $("form").find(":input")
[<input type=​"text" name=​"fname" value=​"d" id=​"simpleForm_fname">​, 
 <input type=​"submit" id=​"simpleForm_0" value=​"Go!">​]
> $("form").find("input") // Don't need the ":"
[<input type=​"text" name=​"fname" value=​"d" id=​"simpleForm_fname">​,
 <input type=​"submit" id=​"simpleForm_0" value=​"Go!">​]