function $(selector) {
var resultObject = {
hide: function() {
if (selector == this) {
selector.style.visibility = "hidden";
}
}
};
return resultObject;
}

<input type="button" value="hide myself with my jquery " onclick="$(this).hide();" />
&#13;
如何检查选择器是否是&#34;这个&#34;所以我可以隐藏他..请考虑我必须重建hide函数,所以我不允许使用任何Jquery函数...
答案 0 :(得分:9)
您根本不需要与this
进行比较,因为您希望它能够传递给传递给$
的任何内容。只需忽略if
:
function $(selector) {
var resultObject = {
hide: function () {
selector.style.visibility = "hidden";
}
};
return resultObject;
}
<input type="button" value="hide myself with my jquery " onclick="$(this).hide();" />
现在,如果您的selector参数可能不是DOM元素,而是CSS选择器,那么您需要测试其数据类型的参数。还要注意CSS选择器可以表示多个元素,所以如果你想要处理它,你还需要一个循环。
以下是如何实现此功能的示例:
function $(selector) {
var nodes = typeof selector === "string"
? Array.from(document.querySelectorAll(selector))
: [selector];
var resultObject = {
hide: function () {
nodes.forEach(function (node) {
node.style.visibility = "hidden";
});
}
};
return resultObject;
}
<input type="button" value="hide all divs with my jquery "
onclick="$('div').hide();" />
<div>div 1</div>
<div>div 2</div>
下一个挑战是使这个可链接,你可以通过在 resultObject 中放入所有必要的状态并在每个方法上返回它来做到这一点:
function $(selector) {
var resultObject = {
nodes: typeof selector === "string"
? Array.from(document.querySelectorAll(selector))
: [selector],
hide: function () {
resultObject.nodes.forEach(function (node) {
node.style.visibility = "hidden";
});
return resultObject;
},
text: function (txt) {
resultObject.nodes.forEach(function (node) {
node.textContent = txt;
});
return resultObject;
},
color: function (colorCode) {
resultObject.nodes.forEach(function (node) {
node.style.color = colorCode;
});
return resultObject;
}
};
return resultObject;
}
<input type="button" value="color and put text in divs with my jquery "
onclick="$('div').color('red').text('clicked!');" />
<div>div 1</div>
<div>div 2</div>
这不是最佳选择,因为每次调用 $ 都会重新创建 resultObject 。所以你可以考虑改进它。然后应该有方法来过滤结果,找到所选节点下面的元素,等等。
但我们离题了。在你知道之前,你真的在写一个图书馆。 ; - )
答案 1 :(得分:4)
这里指的是窗口对象。
您可以使用call / apply
更改此范围检查以下代码段
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
NSHTTPURLResponse * response = (NSHTTPURLResponse *)navigationResponse.response;
}
function $(selector) {
var resultObject = {
hide: function() {
this.style.visibility = "hidden";
}
};
return resultObject;
}
希望有所帮助
答案 2 :(得分:2)
看起来你已经过度复杂了。这可以通过简单地给你的按钮一个类来实现:
<input type="button" value="hide myself with my jquery " class="hideme"/>
然后在JS中创建一个单击处理程序:
$('.hideme').click(function(){
$(this).hide();
});
答案 3 :(得分:1)
OT,因为其他人已经指出,你似乎(过度)使事情变得复杂,对你的代码采用不同的方法:
onCreate()
// a utility ...
var style = (prop, value) => node => (node && node.style[prop] = value, node);
// ... in action ...
var hide = style("visibility", "hidden");