jQuery笔试题

1、页面中有一个select标签,代码如下:

<select id="sel">
    <option value="0">请选择</option>
    <option value="1">选项一</option>
    <option value="2">选项二</option>
    <option value="3">选项三</option>
    <option value="4">选项四</option>
</select>

要使“选项四”选中的正确写法。(B)

A:$(“#sel”).val(“选项四”);

B:$(“#sel”).val(“4”);

C:$(“#sel > option:eq(4)”).checked; // 首先,selected标签中,option是否别选中应该使用selected,而不是checked(用于单选和复选)

D:$(“#sel option:eq(4)”).attr(“selected”); // 愿意是想将索引为4 的option的selected的值赋值为selected(即true),但是少了赋值

所以 D选项正确答案应该是:$(“#sel option:eq(4)”).attr(“selected”, “selected”) 或者 $(“#sel option:eq(4)”).attr(“selected”, true)

这是因为select标签中的value值就是被选中选项的value值,所以$(“#sel”).val(“4”);这个就是将select标签value值设置为4,相应的就是选中了选项四。

番外:

$("#sel > option:eq(4)").is(":selected")

选中select标签子代option索引为4 的元素,从0开始;is 是判断是否有selected,即是否被选中;:selected 是伪类选择器,这个会直接返回一个boolean值。

2、页面中有一个性别单选按钮,请设置”男”为选中状态。代码如下:

<input type="radio" name="sex" /><input type="radio" name="sex" />

A:$(“sex[0]”).attr(“checked”,true);

B:$(“#sex[0]”).attr(“checked”,true); // A和B两个使用 sex[0] 这种写法就是不合法的

C:$(“[name=sex]:radio”).attr(“checked”,true);

D:$(“:radio[name=sex]:eq(0)”).attr(“checked”,true);

正确答案:D

这是因为 [name=sex] 表示选中 name属性为sex 的标签,$(“ “) 里面使用组合选择,总体来说就是选择类型为 radio ,并且name属性为sex ,且索引为0 的元素,并将它的checked 赋值为true。

Tip:若果是关于设置boolean的,我们最后用prop

还可以这样写:

$("[name=sex]:radion:eq(0)").prop("checked",checked)
$("[name=sex]:radion:eq(0)").prop("checked",true)  // attr 同理

// 使用 :first
$("[name=sex]:first").prop("checked",true)

3、下面说法不正确的是(A)

A:$(“:hidden”)选取<input>的type类型是hidden的不可见元素。

B:$(“div >span”)选取<div>元素下元素名是<span>的子元素。

C:$(“div :first”)选取所有<div>元素中第一个<div>元素。

D:$(“input:gt(1)”)选取索引值大于1的<input>元素。

:hidden() 过滤器,用于选择被影藏的元素,而A错是因为不仅仅是type=hidden的,是包括页面中全部的被影藏元素

gt( ) 是jQuery选择器过滤器之一,用于选择元素索引大于指定值的元素。 即,greater than (大于)

4、如果需要匹配包含文本的元素,用下面哪种来实现 (B)

A:text() B:contains()

C:input() D:attr(name)

contains( ) 一个过滤器,是jQuery中筛选元素的,用于选择包含指定文本的元素。

需要注意一点,contains 是模糊匹配,比如:

<div>这是一个男人</div>
<p>这里有一个男孩</p>

<script>
  $(":contains('男')").css("color", "red");
</script>

虽然我选择了匹配 “ 男 ”的文本,但是也有可能会选中其他中文,比如“女”,所以最好使用 .filter( )

5、下面不属于Jquery的ajax全局事件的是 (C)

A:ajaxComplete(callback) B:ajaxSuccess(callback)

C:$.post(url) D:ajaxSend(callback)

全局事件,监督整个程序的Ajax发送,然后执行特定的代码。比如:

ajaxComplete(callback) :在每个Ajax请求完成时触发,无论成功或失败。

多选

1、获取<div id=”content”>内容…</div>标签里的文本内容。(BC)

A: $(“#content”).val(); B: $(“#content”).html();

C: $(“#content”).text(); D: $(“#content”).innerHTML();

text() 获取纯文本内容,html() 获取包括HTML标签的文本内容

而innerHTML是原生DOM里面的属性,不是jQuery里面的方法。是用于获取内容包含HTML标签,也可以设置。

innerText则是不包含HTML,可获取纯文本和设置。

2、案例代码如下

<body>
    <form>
         用户名:<input type="text" id="username" name="username" />
           密码:<input type="password" id="pwd" name=" pwd "/>
    </form>
</body>

请用jquery选择器选取username文本框输入值的内容:(ABCD)

A: $(“#username”).val();

B: $(“input”)[0].value;

C: $(“input[name=username]”).val();

D: $(“:input[name=username]”).val();

需要注意的是:C和D有不同,C选项的input[name=username],表示的是表单里面的input 元素,name属性为username 的

而D选项的 :input[name=username],与C只差了一个冒号,但是D表达的是所有表单元素里面name属性为username的。

:input 是jQuery里面一个特有的选择器,表示表单里所有的元素,包含:input、select、textarea等

3、执行下面代码:

$(document).ready(function(){

​ var array =[‘墨家’,’墨子’];

​ var str = “[“;

​ $.each( array, function(parm1,parm2){

​ str += “{parm1: “ + parm1 + “,” + “parm2: “ + parm2 + “},”;

​ });

​ str = str.substring(0, str.length - 1) + “]”;

​ alert(str);

});

请写出打印结果: [{parm1:0,parm2: ‘墨家’},{parm1:1,parm2: ‘墨子’}]

需要理解,$.each(arrayObject, function(index, element) {

})

这是jQuery的 $.each() 方法,用于迭代数组或者对象,each里面第一个参数为数组或对象,第二个是一个函数,每个元素会执行这个函数,而函数里面两个参数,第一个是索引,第二个是值。

其次,substring() 方法是JavaScript里面的一个方法,用于获取子串